在 c# 中,(int),int32.parse() 和 convert.toint32() 三種方法有何區別?
int 關鍵字表示一種整型,是32位的,它的 .net framework 型別為 system.int32。
(int)表示使用顯式強制轉換,是一種型別轉換。當我們從 int 型別到 long、float、double 或decimal 型別,可以使用隱式轉換,但是當我們從 long 型別到 int 型別轉換就需要使用顯式強制轉換,否則會產生編譯錯誤。
int32.parse()表示將數字的字串轉換為32 位有符號整數,屬於內容轉換[1]。
我們一種常見的方法:public static int parse(string)。
如果 string 為空,則丟擲 argumentnullexception 異常;
如果 string 格式不正確,則丟擲 formatexception 異常;
如果 string 的值小於 minvalue 或大於 maxvalue 的數字,則丟擲 overflowexception 異常。
convert.toint32() 則可以將多種型別(包括 object 引用型別)的值轉換為 int 型別,因為它有許多過載版本[2]:
public static int toint32(object);
public static int toint32(bool);
public static int toint32(byte);
public static int toint32(char);
public static int toint32(decimal);
public static int toint32(double);
public static int toint32(short);
public static int toint32(long);
public static int toint32(sbyte);
public static int toint32(string);
......
(int)和int32.parse(),convert.toint32()三者的應用舉幾個例子:
例子一:
long longtype = 100;
int inttype = longtype; // 錯誤,需要使用顯式強制轉換
int inttype = (int)longtype; //正確,使用了顯式強制轉換
例子二:
string stringtype = "12345";
int inttype = (int)stringtype; //錯誤,string 型別不能直接轉換為 int 型別
int inttype = int32.parse(stringtype); //正確
例子三:
long longtype = 100;
string stringtype = "12345";
object objecttype = "54321";
int inttype = convert.toint32(longtype); //正確
int inttype = convert.toint32(stringtype); //正確
int inttype = convert.toint32(objecttype); //正確
例子四[1]:
double doubletype = int32.maxvalue + 1.011;
int inttype = (int)doubletype; //雖然執行正確,但是得出錯誤結果
int inttype = convert.toint32(doubletype) //丟擲 overflowexception 異常
(int)和int32.parse(),convert.toint32()三者的區別:
第乙個在對long 型別或是浮點型到int 型別的顯式強制轉換中使用,但是如果被轉換的數值大於 int32.maxvalue 或小於 int32.minvalue,那麼則會得到乙個錯誤的結果。
第二個在符合數字格式的 string 到 int 型別轉換過程中使用,並可以對錯誤的 string 數字格式的丟擲相應的異常。
第三個則可以將多種型別的值轉換為 int 型別,也可以對錯誤的數值丟擲相應的異常。
無論進行什麼型別的數值轉換,數值的精度問題都是我們必須考慮的。
C 型別轉化
c 型別轉化 在理解c 型別轉換前,我們先回顧c語言中型別轉換。c風格的強制型別轉化很簡單,不管什麼型別轉換統統是 type b type a。但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因為它可以在任意型別之間轉換,比如你可以把乙個指向const物件的指標轉換成指向非con...
c 型別轉化
資料型別轉換 隱式轉換 int age 10 double sum age int salary 150000 decimal money salary double speed 10.4f float minspeed float speed string num 123 int n int.pa...
C 型別轉化
const char a 必須const 因為 hello 存在常量區,為唯讀 string str hello str 1 s pass a str.c str a 1 s fail 報錯 唯讀,指標指向常量區char a a 11 int b atoi a cout string str to ...