C#類型轉換

來源:互聯網
上載者:User

標籤:

這是轉載至園子裡一位朋友的文章:

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#類型轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.