標籤:
這是轉載至園子裡一位朋友的文章:
1.整數類型:
| 類型 |
長度 |
| sbyte |
8位有符號整數 |
| byte |
8位不帶正負號的整數 |
| short |
16位有符號整數 |
| ushort |
16位不帶正負號的整數 |
| int |
32位有符號整數 |
| uint |
32位不帶正負號的整數 |
| long |
64位有符號整數 |
| ulong |
64位不帶正負號的整數 |
2.浮點類型:
| 類型 |
精度 |
| float |
精確到7位 |
| double |
精確到15~16位 |
不做設定,包含小數點的值都被認為是double,若想強製為float,需加f/F 或(float)強制轉換為float。
3.bool類型:
true/false
預設初始化,整型浮點為0,bool為false。
4.實值型別轉換
隱式轉換
int uint long ulong -->float long ulong-->double 可能導致精度損失,但不會影響其數量級。
顯式轉換(強制轉換)
5.裝箱和拆箱:
裝箱:將實值型別轉換為參考型別,是將被裝箱的實值型別複製一個副本來轉換;
拆箱:將參考型別轉換為實值型別,注意相容性:不能將string的object轉換為int。
6.(int),int.Parse(),int.TryParse(),Convert.ToInt32()比較:
【int.Parse(),Convert.ToString(),(int)obj,int.TryParse()】
(int)是一種類型轉換;當我們從int類型到long,float,double,decimal類型,可以使用隱式轉換,但是當我們從long類型到int類型就需要使用顯式轉換,否則會產生編譯錯誤。
int.Parse()是一種類容轉換;表示將數字內容的字串轉為int類型。int.Parse 只能轉換數字類型的字串。如果字串為空白,則拋出ArgumentNullException異常;如果字串內容不是數字,則拋出FormatException異常;如果字串內容所表示數字超出int類型可表示的範圍,則拋出OverflowException異常;
int.TryParse 與 int.Parse 又較為類似,但它不會產生異常,轉換成功返回true,轉換失敗返回false。最後一個參數為輸出值,如果轉換失敗,輸出值為0;
Convert.ToInt32()是一種類容轉換;但它不限於將字串轉為int類型,還可以是其它類型的參數;
比較:
Convert.ToInt32 參數為null 時,返回 0;
int.Parse 參數為null 時,拋出異常。
Convert.ToInt32 參數為 "" 時,拋出異常;
int.Parse 參數為"" 時,拋出異常。
Convert.ToInt32 可以轉換的類型較多;
7. ToString(),Convert.ToString(),(string),as比較:
【obj.ToString()、Convert.ToString()、(string)obj、obj as string】
ToString(),Convert.ToString()由別的對象得到 string 對象,它們間的區別只表現在要轉換的對象為 null 時,如果 obj 為 null,調用 obj.ToString 方法會導致 NullReferenceException 異常,調用 Convert.ToString 不會拋出異常而返回一個 null。
用強制轉換 (string)obj 要求 obj 的運行時類型必須是 string。如果不是,就會拋出異常。
用 as 方法則會相對平穩,當 obj 的運行時類型不是 string 時會返回 null 而不拋出異常。
所以在通常在我們需要得到某個對象的 string 表達形式時,我們應該使用 ToString 和 Convert.ToString,這時候你就得根據情形選一個,假如你能保證你的對象不為 null,則兩個差不多。如果有可能為 null,你就應該用 Convert.ToString,如果你希望它為 null 的時候拋出異常,那麼當然可以選擇 ToString。
這裡是說 object 到 string,如果在其它類型上調用第一種 ToString(),得到的不一定是實際的內容,可能是對該類的描述,這取決於該類如何? ToString() 方法。
C#類型轉換