C 型別轉化

2021-09-06 13:13:21 字數 2271 閱讀 6793

在 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 ...