今天來講一講《Convert.ToInt32()、int.Parse()和(int)三者的區別》
我們來看下三種方法在三種使用場景中的表現,直接上代碼:
//object 轉 int
object num1 = 4.5;
Debug.Log(Convert.ToInt32(num1)); //4
object num2 = 3.5;
Debug.Log(Convert.ToInt32(num2)); //4
object num3 = null;
Debug.Log(Convert.ToInt32(num3)); //0
//一般值類型之間的轉換
ETest eNum = ETest.EClient;
Debug.Log((int)eNum); //1
Debug.Log((int)(4.5)); //4
Debug.Log((int)(3.5)); //3
//string 轉 int
string sNum1 = "4";
Debug.Log(int.Parse(sNum1)); //4
string sNum2 = "4.5";
Debug.Log(int.Parse(sNum2)); //Exception
string sNum3 = "";
Debug.Log(int.Parse(sNum3)); //Exception
輸出:
根據執行結果來看,需要注意的是:
第一種情況,當值是float的時候:
Convert.ToInt32() 會進行“非標準”的四捨五入,如果值恰好是某兩個整數的中間數,則取偶數。
而(int)就是向下取整
而int.parse 是會拋出異常的。
第二種情況,當值是null的時候
Convert.ToInt32() 返回0
而int.parse 還是是會拋出異常的