zoukankan      html  css  js  c++  java
  • C#學習基礎類型轉換

    類型轉換
    c#語言中數據類型的轉換可以分為兩類:隱式轉換(implicit conversions)和顯式轉換

    (explicit conversions)
    1,隱式轉換就是系統默認的,不需要加以聲明就可以進行的轉換.編譯器無需對轉換進行詳

    細檢查就能夠安全地執行轉換.
    裝箱轉換實際上就是一种隱式類型轉換
    隱式轉換有以下三种:
    隱式數值轉換
    隱式枚舉轉換
    隱式引用轉換

    1.1隱式數值轉換包括以下幾种:
    從sbyte類型到short,int,long,float,double,decimal
    從byte類型到short,ushot,int,uint,long,ulong,float,double,decimal
    從short類型到int,long,float,double,decimal
    從ushout類型到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
    從char類型到ushort,int,uint,long,ulong,float,double,decimal
    從float類型到double
    其中,從int,uint,long到float以及從long到double的轉換可能會精度下降,但決不會引起

    數量上的丟失.其它的隱式數值轉換不會有任何信息丟失.
    隱式數值轉換實際上就是從低精度的數值類型到高精度的數值類型的轉換.
    1.2隱式枚舉轉換
    隱式枚舉轉換允許把十進制整數轉0換成任何枚舉類型,對應其它的整數則不存在這种隱式

    轉換,下面是一個列子:
    using system;
    emum Weekday {Sumday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
    class test
    {
      public static void Main()
      {
        Weekday day;
        day=0;
        Console.WriteLine(day);
      }
    }
    程序轉出的是0,如果把day=0改為day=1編譯器就會給出錯誤:
    can not implictly convert type 'int' to type 'enum'
    1.3隱式引用轉換
    隱式引勝轉換包抱以下幾類:
    從任何引用類型到對像類型的轉換.
    從類類型s到類類型t的轉換,其中s是t的子類.
    從類類型s到接口類型t的轉換,其中類s實現了接口.
    從接口類型s到接口類型t的轉換,其中t是s的父接口.
    從元素類型為Ts的數組類型S向元素類型為Tt的數組類型T轉換,這种轉換需要滿足下列條件

    :S和T只有元素的數據類型不同,但它們的維數相同.Ts和Tt都是引用類型,存在從Ts到Tt的

    隱式引用轉換.
    從任何數組類型到System.Array的轉換.
    從任何代表類型到System.Delegate的轉換.
    從任何數組類型或代表類型到System.ICloneable的轉換.
    從空類型(null)到任何引用類型的轉換.

    2.顯式類型轉換
    顯式類型轉換又叫強制類型轉換.與隱式轉換正好相反,顯式轉換需要用戶明確地指定轉換

    的類型.
    拆箱轉換是一种顯式轉換
    顯式轉換分為以下三种:
    顯式數值轉換
    顯式枚舉轉換
    顯式引用轉換

    2.1顯式數值轉換是提當不存在相應的隱式轉換時,從一种數字類型到另一种數字類型的轉

    換.包括:
    從sbyte到byte,ushort,uint,ulong,char
    從byte到sbyte,char
    從short到sbyte,byte,ushort,uint,ulong,char
    從ushort到sbyte,byte,short,char
    從int到sbyte,byte,short,ushort,uint,ulong,char
    從uint到sbyte,byte,short,ushort,int,uint,char
    從long到sbyte,byte,short,ushort,int,uint,ulong,char
    從ulong到sbyte,byte,short,ushort,int,uint,long,char
    從char到sbyte,byte,short
    從float到sbyte,byte,short,ushort,int,uint,long,ulong,char,decimal
    從double到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,decimal
    從decimal到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double
    這种顯式轉換有可能丟失信息或是有異常拋出
    2.2顯式枚舉轉換
    從sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,decimal到任何枚

    舉類型.
    從任何枚舉類型到

    sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,decimal
    從任何枚舉類型到任何其它枚舉類型.
    顯式枚舉轉換是這樣進行的:它實際上是枚舉類型的元素類型與相應類型之間的隱式或顯示

    轉換,比如,有一個元素類型為int的枚舉類型E,則當執行從E到byte的顯式枚舉轉換時,實際

    上作的是從int到byte的顯式數字轉換;當執行從byte到E的顯式枚舉轉換時,實際上是執行

    byte到int的隱式數字轉換.
    如下面的程序:
    using system;
    emum Weekday{Sumday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
    class test
    {
      public static void Main()
      {
        Weekday day;
        day=(Weekday)3;
        Console.WriteLine(day);
      }
    }
    程序輸出的是:3
    2.3顯式引用轉換
    顯式引用轉換包括:
    從對像到任何引用類型
    從類類型S到類類型T,其中S是T的基類.
    從類類型S到接口類型T,其中S不是密封類,而且沒有實現T.
    從接口類型S到類類型T,其中T不是密封類,而且沒有實現S.
    從接口類型S到接口類型T,其中S不是T的子接口.
    從元素類型為Ts的數組類型S到元素類型為Tt的數組類型T的轉換,這种轉換需要滿足下列條件:S和T只有元素的數據類型不同,而維數相同.Ts和Tt都是引用類型,存在從Ts到Tt的顯式引用轉換.
    從System.Array到數組類型.
    從System.Delegate到代表類型.
    從System.ICloneable到數組類型或是代表類型.
    不論是隱式還是顯式引用轉換,雖然可能會改變引用值的類型,卻不會改變值本身.

     

     

     


     

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    MATLAB中的SFunction的用法(C语言)
    OpenGL中的转换矩阵
    MATLAB读取和写入Excel文件
    一阶微分方程的求解
    三对角矩阵(Tridiagonal Matrices)的求法:Thomas Algorithm(TDMA)
    CarSim与Simulink联合仿真
    三次样条插值(Cubic Spline Interpolation)及代码实现(C语言)
    在Simulink中创建库
    轮胎的魔术公式(Magic Fomula)模型
    C#中的编译时的类型与运行时的类型
  • 原文地址:https://www.cnblogs.com/Athrun/p/941558.html
Copyright © 2011-2022 走看看