強制類型轉換
在C#中,我們可以看到三種強制類型轉換,比如強制轉換成有符號32位整型,可以找到下面三種方式:
① (int)() ②Convert.ToInt32() ③int.Parse()
三種轉變在有些數據時可以通用,但是用法上仍然有很大的區別
(int)表示使用顯式強制轉換,是一種類型轉換。當我們從 int 類型到 long、float、double 或decimal 類型,可以使用隱式轉換,但是當我們從 long 類型到 int 類型轉換就需要使用顯式強制轉換,否則會產生編譯錯誤。
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);
Int32.Parse()表示將包含數字的字符串轉換為32 位有符號整數,屬於內容轉換
我們一種常見的方法:public static int Parse(string)。
如果 string 為空,則拋出 ArgumentNullException 異常;
如果 string 格式不正確,則拋出 FormatException 異常;
如果 string 的值小於 MinValue 或大於 MaxValue 的數字,則拋出 OverflowException 異常。
可以看出來,Convert.ToInt32() 的功能是最強大的,它把Int32.Parse()功能包括了,也是說是Int32.Parse()是Convert.ToInt32() 的一種特殊情況。
備忘:
1.研究C#里的object引用類型,探究為什么有時候數據必須要轉換成object,目前猜想,比如一個IP地址,如果真正要用到函數里或者要獲取的時候可能它不屬於字符串,也不屬於其它類型,這時用object來把數據截取過來