一步一步學習C#語言【類型轉換】

來源:互聯網
上載者:User

標籤:.net開發 c#編程

  • 類型轉換的概念

    所有的資料在電腦記憶體中都是由一系列的位組成,即0和1組成。不同的類型用不同的位元模式來儲存。

    類型轉換即是一系列位從一種類型的變數到另一種類型的變數中,它們佔用的儲存空間可能不相同,目標類型可能能儲存下所有來源資料,結果可能會得到不期望值。

    類型轉換有兩種形式:隱式轉換和顯式轉換。


  • 隱式轉換

    隱式轉換不需要做任何動作,也不需要編寫任何代碼來實現。

    即使兩個變數儲存資訊完全相同,使用不同類型來解釋他們時,方式也是不同的。

    簡單類型只有bool類型和string類型沒有隱式轉換。

    隱式轉換規則:任何類型A,只要其取值範圍完全包含在類型B的取值範圍內,就可進行隱式轉換。
    為數實值型別隱式轉換表:

    類型 目標
    sbyte short、int、long、float、double、decimal
    byte short、ushort、int、uint、long、ulong、float、double、decimal
    short int、long、float、double、decimal
    ushort int、uint、long、ulong、float、double、decimal
    int  long、float、double、decimal
    uint long、ulong、float、double、decimal
    long float、double、decimal
    ulong float、double、decimal
    float double
    char ushort、int、uint、long、ulong、float、double、decimal


  • 顯式轉換

    顯式轉換是強制數值從一種資料類型轉換成另一種資料類型。

    文法:    <(destinationType)sourceVar>

    彼此之間幾乎沒有什麼關係的類型或根本沒有關係的類型,不能進行強制轉換。

    樣本:    byte destinationVar;

              short sourceVar = 281;

              destinationVar = (byte)sourceVar;

    當顯式把一種資料類型轉換成另一種資料類型,可能會造成資料溢出或丟失。

    可以使用checked和unchecked關鍵字檢查運算式是否溢出。

    樣本:    byte destinationVar;

              short sourceVar = 281;

              destinationVar = checked((byte)sourceVar);

    執行上述代碼,程式將崩潰。


  • 使用Convert命令進行顯式轉換

    使用Convert命令進行顯式轉換時,總是要進行溢出檢查,checked和unchecked關鍵字以及項目屬性設定不起作用。

  • 命令
    結果
    Convert.ToByte(val)
    val轉換為byte
    Convert.ToSByte(val)
    val轉換為sbyte
    Convert.ToInt16(val)
    val轉換為short
    Convert.ToUInt16(val)
    val轉換為ushort
    Convert.ToInt32(val)
    val轉換為int
    Convert.ToUInt32(val)
    val轉換為uint
    Convert.ToInt64(val)
    val轉換為long
    Convert.ToUInt64(val)
    val轉換為ulong
    Convert.ToSingle(val)
    val轉換為float
    Convert.ToDouble(val)
    val轉換為double
    Convert.ToDecimal(val)
    val轉換為decimal
    Convert.ToChar(val)
    val轉換為char
    Convert.ToBoolean(val)
    val轉換為bool
    Convert.ToString(val)
    val轉換為string


  • 資料類型轉換樣本



  • using System;class program{    static void Main(string[] args)    {        short shortResult, shortVal = 4;        int integerVal = 67;        long longResult;        float floatVal = 10.5F;        double doubleResult, doubleVal = 99.999;        string stringResult, stringVal = "17";        bool boolVal = true;                Console.WriteLine("Variable Conversion Examples\n");                doubleResult = floatVal * shortVal;        Console.WriteLine("Implicit, -> double: {0} * {1} -> {2}", floatVal, shortVal, doubleResult);                shortResult = (short)floatVal;        Console.WriteLine("Explicit, -> short:  {0} -> {1}", floatVal, shortResult);                stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);        Console.WriteLine("Explicit, -> string: \"{0}\" + \"{1}\" -> {2}", boolVal, doubleVal, stringResult);                longResult = integerVal + Convert.ToInt64(doubleVal);        Console.WriteLine("Mixed,    -> long:   {0} + {1} -> {2}", integerVal, doubleVal, longResult);    }}

    結果顯示:

    650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/4B/wKiom1QSnAbCb1plAAC7iSwPG1E727.jpg" title="2014-09-12 15_08_03-file____C__Program Files_Notepad++_plugins_CSScriptNpp_cscs.exe.png" alt="wKiom1QSnAbCb1plAAC7iSwPG1E727.jpg" />

本文出自 “行動勝於言語” 部落格,請務必保留此出處http://vikxiao.blog.51cto.com/9189404/1551588

一步一步學習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.