C#知識點講解之Convert.ToInt32()、int.Parse()和(int)三者的區別

今天來講一講《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 還是是會拋出異常的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章