C#中轉換函數Convert、Parse、TryParse、(int) 的區別


Convert、Parse、TryParse、(int) 三個函數都是將值轉換成整數,但是四者之間各有異同,開發人員可以根據情況選用最合適的。以下解釋均經過高人驗證,希望對大家有所幫助。 

1 (int)變量名[強制類型轉換]: 

     該轉換方式主要用於數字類型轉換,從int類型到long,float,double,decimal類型,可以使用隱式轉換,但是從long類型到int類型就需要使用顯式轉換,也就是該數據類型轉換方式,否則會產生編譯錯誤。 

      該方式對於浮點數會做無條件舍去,失去精確度 

      當然,該方式也可以進行object到int得轉換,但是,object的值要賦予int類型的值,否則會產生編譯錯誤,而且object為null時也會出錯。 

      最后切忌的一點,千萬不要用來處理char類型到int類型的轉換,否則傳回的的值是ASCII代碼,而並不是你想要的值。 

2 int.Parse(string類型變量名) 

       該方式是將數字內容的字符串轉為int類型,如果字符串內容為空或者null時,則拋出ArgumentNullException異常;如果字符串內容不是數字,則拋出FormatException異常;如果字符串內容所表示數字超出int類型可表示的范圍,則拋出OverflowException異常。 

      使用該方法切忌的一點就是只能處理字符串內容,而且字符串內容只能在int類型可表示的范圍之內。 

3 int.TryParse(string s, out int result) 

      該方式也是將數字內容的字符串轉為int類型,但是該方式比int.Parse優越的地方,就是它不會出現異常。如果轉換成功返回 true,如果轉換失敗返回 false。很明顯,最后一個參數為輸出值,如果轉換失敗,輸出值為 0;如果轉換成功,則輸出相應的值。

 4 Convert.ToInt32 

      該方式不僅可以將字符串轉為int類型,還可以將其它類型的值轉成int類型。變量若為object或string類型,當其值為null時,會傳回0,不會造成程序錯誤,但是若此string類型的值為string.Empty,在轉型成int時,仍會造成程序錯誤。     該方式對於浮點數會做四舍五入。 

    該方式同強制轉換一樣,不能用來處理char類型,否則傳回的是ASCII代碼。

 

轉自:http://www.blue1000.com/bkhtml/c17/2013-07/71292.htm

可以自己寫一個轉換函數減少代碼量

//判斷一個object是否為Null
        public static bool IsObjectNull(object value)
        {

            if (value == null || value == DBNull.Value || value.ToString() == "")
            {
                return true;

            }
            else
            {
                return false;
            }


        }
        //獲取一個object的decimal
        public static decimal GetDecimal(object value)
        {
            try
            {
                decimal temp = 0;
                if (value == null || value == DBNull.Value || value.ToString() == "")
                {
                    return 0;

                }
                else
                {
                    temp = decimal.Parse(value.ToString());
                }
                return temp;
            }
            catch (Exception e)
            {
                return 0;
            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM