C#中的數據轉換問題

首先,我們先來看一下顯式轉換和隱式轉換,其實這兩個概念是非常簡單的,看下面這兩行簡單的代碼:

                   //隱式轉換
                   int b = 10;
                   float a = b;
                   
                   //顯式轉換
                   float  c = 10;
                   int d = (int)c;

看到這裏我相信大家都已經清楚了,隱式轉換就是我們什麼都不用做,編譯器會自動幫我們做轉換,而對於顯式轉換,實際上就是通過強制轉換來做類型轉換。
那什麼樣的數據可以做隱式轉換,什麼樣的數據要做顯式轉換呢?

隱式轉換:將佔用存儲空間小的數據轉換成佔用存儲空間大的數據時,編譯器可以幫我們做轉換,我們用隱式轉換即可。

顯式轉換:將佔用存儲空間大的數據轉換爲佔用存儲空間小的數據時,我們需要通過強制轉換的形式來進行顯式轉換。

下面,來具體談談在C#這門語言中,我們平時常用的基本數據類型之間是如何轉換的:

(1)強制轉換:這種可能是我們最熟悉的一種方式,當然其肯定有弊端所在,所以建議能不使用就不使用強制轉換的方式來轉換數據類型。

(2)T.Parse(string a)方法:T表示數據類型,string不包括在T裏面,通常用於將string類型的數據轉換爲其他類型的數據,使用例子如下:

 string a = "2";
 int b= int.Parse(a);

(3)T.TryParse(string a,out b)方法:T表示數據類型,string不包括在裏面。這個其實是上面的Parse方法的一個改進,其有了一個out參數b,b的類型是T型,假如可以轉換的話,那麼最後轉換後的結果就會到b中去,這時b的值就是我們最後要的結果(注意這個方法沒有返回值,不能聲明一個變量去接值),但是假如轉換不成功,那麼b的值會返回0,表示轉換失敗。轉換例子如下:

 string a = "2";
 int b;
 int.TryParse(a ,out b);

(4)Convert類:這個類是C#中用途很廣的一個類,它的作用是將一個數據類型轉換爲另一個數據類型,基本所有的基本數據類型都可以互相轉換,使用例子如下:

 string a = "2";
 int c = Convert.ToInt32(a);

具體的其他類型之間的轉換大家可以自己F12到Convert中去查看,其有非常多的重載方法。

最後我想提一點就是轉換效率問題,實際上在將string類型轉換爲其他類型時(這也是我們最常用的轉換形式),我們調用Convert類的方法實際上底層調用的還是Parse()這個方法,所以單純的從這裏來看我們將string類型轉換爲其他類型時使用Parse()方法的效率會更高,但是假如大家嫌麻煩,我還是建議使用Convert類來做轉換,因爲這個類基本上是萬能的,不容易出錯的。
That’s All.

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