1樓:
convert.toint32、(int)和int.parse三者的區別:
前者適合將object類型別轉換成int型別,如convert.toint32(session["shuzi"]);
(int)適合簡單資料型別之間的轉換;
int.parse適合將string類型別轉換成int型別,如int.parse(session["shuzi"].tostring())。
(1)這兩個方法的最大不同是它們對null值的處理方法:
convert.toint32(null)會返回0而不會產生任何異常,但int.parse(null)則會產生異常。
沒搞清楚convert.toint32和int.parse()的細細微區別時千萬別亂用,否則可能會產生無法預料的結果,舉例來說:
假如從url中取乙個引數page的值,我們知道這個值是乙個int,所以即可以用convert.toint32(request.querystring["page"]),也可以用,int.
parse(request.querystring["page"]),但是如果page這個引數在url中不存在,那麼前者將返回0,0可能是乙個有效的值,所以你不知道url中原來根本就沒有這個引數而繼續進行下一下的處理,這就可能產生意想不到的效果,而用後一種辦法的話沒有page這個引數會丟擲異常,我們可以捕獲異常然後再做相應的處理,比如提示使用者缺少引數,而不是把引數值當做0來處理。
(2)還有一點區別就是
a. convert.toint32(double value)
如果 value 為兩個整數中間的數字,則返回二者中的偶數;即 3.5轉換為4,4.5 轉換為 4,而 5.
5 轉換為 6。 不過4.6可以轉換為5,4.
4轉換為4
b. int.parse("4.5")
直接報錯:"輸入字串的格式不正確".
c. int(4.6) = 4
int轉化其他數值型別為int時沒有四捨五入,強制轉換
int.parse是轉換string為int
convert.toint32是轉換繼承自object的物件為int的.
你得到乙個object物件,你想把它轉換為int,用int.parse就不可以,要用convert.toint32.
個人總結:
(1)convert.toint32的引數比較多,int.parse只能轉換string型別的.
(2)parse就是把string轉換成int,char,double....等,也就是*.parse(string) 括號中的一定要是string.
(3)convert可以提供多種型別的轉換,也就是convert.*()括號中可以為很多種型別(包括string).
(4)至於效率上的區別可以看看這遍文章:《細說convert和parse到底那個效率高》
2樓:
樓上說的非常清楚了,
我再補充幾點:
1.float,double等數值型別轉int,就用(int)var,
2.字串數字轉int,要用int.parse而不用convert.int32
3.其它情況用convert.int32
即:首先考慮(int)var,再次是int.parse,如果前面二者都不行的,就用convert.int32,convert.int32效率低,
C語言,指標轉換問題
記憶體對齊的緣故。p buf 作為乙個指標,它的值是記憶體的某個位元組的位址。如果想要把 p buf 強制轉換成乙個 unsigned int 型別的指標,需要滿足乙個必要條件,就是 p buf 的值必須能夠被4整除。之所以是4,是因為 unsigned int 是要佔4個位元組的 所以你的做法會崩...
高分求C溫度轉換問題
class temperature set 將攝氏溫度轉換為華氏 要轉換的攝氏溫度 public double tofahrenheit 這個是寫在temperature類裡的內容要呼叫的時候 temperature tem new temperature tem.celsius 18 要轉換的溫度...
c 中char轉換為c該轉成什麼型別
答 string c 宣告乙個字串有好多種方式 char cstring 等等好多 我不是搞c 的 char 是8位,int 是32位,可以傳 int 但是要確保 你的 int 變成8位後沒有位數損失,char 一般是乙個 byte 陣列,先要用 marshal.copy 函式將陣列複製到乙個 in...