C中Convert與Parse區別

時間 2021-08-30 09:42:40

1樓:匿名使用者

1)對於轉換物件,convert.toint32()可以為多種型別(例出數字型別外bool,datetime等),int.tryparse()和int.

parse()只能是整型字串型別(即各種整型tostring()之後的形式,不能為浮點型,否則int.parse()就會出現輸入的字串格式不正確的錯誤,int.tryparse()也會返回false,輸出引數為0),(int)只能是數字型別(例float,int,uint等);

2)對於空值null,從執行報錯的角度講,(int)強制轉換和int.parse()都不能接受null;convert.toint32()其實是在轉換前先做了乙個判斷,引數如果為null,則直接返回0,否則就呼叫int.

parse()進行轉換,int.tryparse()其實是對int.parse()做了乙個異常處理,如果出現異常則返回false,並且將輸出引數返回0;

3)針對於浮點型的取捨問題,浮點型只有convert.toint32()和(int)能進行轉換,但是也是進行取捨了的,convert.toint32()採取的取捨是進行四捨五入,而(int)則是擷取浮點型的整數部分,忽略小數部分,例如convert.

toint32(1.499d)和(int)1.499d都返回1,convert.

toint32(1.5d)返回2,而(int)1.5d還是返回1;

4)關於溢位,將大的資料型別轉換為小的資料型別時convert.toint32()和int.parse()都會報溢位錯誤,值對於int32太大或太小,而(int)不報錯,但是返回值為-1。

如此可見,我們在進行資料轉換前選擇轉換方法要謹慎,如果是數字型別可以考慮直接用(int)強制轉換,如果是整型字串型別的,考慮用int.parse()進行轉換,如果不是這兩種型別,再考慮用convert.toint32()進行轉換。

2樓:

convert.toint32()與int.parse()的區別(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).

3樓:守望流逝的青春

convert 和parse 差不多 但是 convert 比parse 全些 有些parse轉換不了的可以用convert 轉換,

4樓:阿吉的

convert.toint32 與 int.parse 較為類似,實際上 convert.toint32 內部呼叫了 int.parse:

convert.toint32 引數為 null 時,返回 0; int.parse 引數為 null 時,丟擲異常。

convert.toint32 引數為 "" 時,丟擲異常; int.parse 引數為 "" 時,丟擲異常。

convert.toint32 可以轉換的型別較多; int.parse 只能轉換數字型別的字串。

int.tryparse 與 int.parse 又較為類似,但它不會產生異常,轉換成功返回 true,轉換失敗返回 false。

最後乙個引數為輸出值,如果轉換失敗,輸出值為 0。

5樓:侍瑞錦

string s = "12";

int j = (int)s;

int i = convert.toint32(s);

試試這個,parse和 j 那個差不多。

6樓:計名

convert: class/object;

parse: method, double.parse("12.3456");

7樓:俺是工科的

言簡意賅的說

convert 更強大

而parse 更快

效能上 當然後者更快,但是對引數的要求有侷限性

在c#中「int,int.parse()」和「convert.toint32()」的區別是什麼?

8樓:手機使用者

都是強制轉換區別在於:(1)這兩個方法的最大不同是它們對null值的處理方法:

convert.toint32(null)會返回0而不會產生任何異常,但int.parse(null)則會產生異常

(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.。

在C 中與是表示且與或,那麼與表示什麼

旅初彤 如果是單獨使用則是進行二進位制數的位與運算,比如二進位制數 100 101 結果就是 100 還可以作為變數的前面表示取變數位址賦值給指標,如 int a 0 int p a a b 或運算,會返回a和b中每個位 位元,即二進位制 最大的值 聽不清啊 在c 中,與 是表示邏輯與 邏輯或,那麼...

C 中邏輯與邏輯非怎麼算的,c語言裡的邏輯「非」應該怎麼理解?

邏輯非 邏輯與 邏輯或 是三種邏輯運算子。邏輯與 相當於生活中說的 並且 就是兩個條件都同時成立的情況下 邏輯與 的運算結果才為 真 邏輯或 相當於生活中的 或者 當兩個條件中有任乙個條件滿足,邏輯或 的運算結果就為 真 邏輯非 就是指本來值的反。與操作是當 前後的兩個表示式都正確或值都不為零的時候...

c 中的析構函式與建構函式的區別

c 中的析構函式與建構函式的區別主要是功能上的區別 建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的乙個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。析構函式 dest...