程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C#數據類型轉換的幾種形式

C#數據類型轉換的幾種形式

編輯:更多關於編程
    本篇文章是對C#中數據類型轉換的幾種形式進行了詳細的分析介紹,需要的朋友參考下  

    1、Convert.ToInt32(); //轉換成32位的整數。
    2、變量.ToString();/最常見的轉換成 字符串。
    3、"訂單"+2514 //後面的數字會轉換為字符串。
    4、((類名A)對象名X) //強行將 對象X 轉換成 A類 的對象。
    5、int.Parse(string);把字符串型轉換成其他類型。
    6、還有,如果要轉換成的類型為引用類型,還可以用 as
    teacher tea = teahcer();
    如 student stu = tea as student;
     
    (1) 隱式轉換:一般是低類型向高類型轉化,能夠保證值不發生變化。
    隱式數值C#數據類型轉換:
    從 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。
    從 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。
    從 float 到 double。
    不存在向 char 類型的隱式轉換,因此其它整型的值不會自動轉換為 char 類型。
    浮點型不能隱式地轉化為decimal型
    隱式枚舉轉換
    隱式枚舉轉換允許將十進制整數 0 轉換為任何枚舉類型。
    隱式引用轉換
    派生類向基類轉換
    隱式引用轉換是指一類引用類型之間的轉換,這種轉換總是可以成功,因此不需要在運行時進行任何檢查。
    裝箱轉換
    裝箱轉換允許將值類型隱式轉換為引用類型。

    (2) 顯示轉換:也稱強制類型轉換。不能保證數據的正確性。
    (type)(表達式)

    (3) 用戶自定義C#數據類型轉換
    所有的用戶自定義轉換都是靜態的,要使用static關鍵字
    用戶自定義轉換分顯示和隱示,它們用implicit(隱式轉換)或 explicit(顯示轉換)關鍵字聲明。
    static 訪問修辭符 轉換修辭符 operator 轉換類型(參數)
    C#數據類型轉換示例:

    復制代碼 代碼如下:
    struct Number
    {
     private int value;
     public Number(int value) { this.value=value; }
     //用戶自定義整型到Number型的隱式轉換
     static public implicit operator Number(int value) { return new Number(value); }
     //用戶自定義從Number型到整型的顯示轉換
     static public explicit operator int(Number n) { return n.value; }
     //用戶自定義從Number類型到string類型的隱式轉換
     static public implicit operator string(Number n) { return n.ToString(); }

    class Test
    {
     static public void Main()
     {
      Number n;
      n=10;
      Console.WriteLine((int)n);
      //隱式轉換到string
      Console.WriteLine(n);
     }
    }


    使用System.Convert類
    將一個基本數據類型轉換為另一個基本數據類型。
    使用Parse方法
    大部份預定義值類型都有這個靜態方法,用來將相應的文本轉化為相應的值類型。

    裝箱和取消裝箱
    裝箱和取消裝箱使值類型能夠與 object 類型相互轉換。
    裝箱轉換允許將“值類型”隱式轉換為“引用類型”。將“值類型”的值裝箱的操作包括:分配一個對象實例並將“值類型”的值復制到該實例中。

    C#數據類型轉換示例:
    此例將整數變量 i 通過裝箱轉換為對象 o。此例顯示對象保留了內容的原始副本,即 123。

    復制代碼 代碼如下:
    public static void Main()
    {
     int i=123;
     object o=i;//隱式的裝箱
     i=456;//改變變量i的值
     Console.WriteLine("Thevalue-typevalue={0}",i);//456
     Console.WriteLine("Theobject-typevalue={0}",o);//123是i的復制值
    }


    取消裝箱轉換:取消裝箱轉換允許將引用類型顯式轉換為值類型。
    取消裝箱操作包括以下兩個步驟:首先檢查該對象實例是否是某個給定的值類型的裝了箱的值,然後將值從實例中復制出來。
    C#數據類型轉換示例:
    下面的示例闡釋無效取消裝箱的情況,即錯誤的取消裝箱如何導致 InvalidCastException。通過使用 try 和 catch,發生錯誤時會顯示錯誤信息。

    復制代碼 代碼如下:
    public class UnboxingTest
    {
     public static void Main()
     {
      int intI=123;
      object o=intI;//裝箱
      try
      { //取消裝箱無效,short不是裝了箱的值類型.檢查該對象實例是否是某個給定的值類型的裝了箱的值
       int intJ=(short)o;
       Console.WriteLine("UnboxingOK.");
      }
      catch(InvalidCastException e)
      {
       Console.WriteLine("{0}Error:Incorrectunboxing.",e);
      }
     }
    }


    其它轉換用運算符
    as
    as 運算符用於執行引用類型的顯式類型轉換。 如果要轉換的類型與指定類型兼容,轉換就會成功;如果類型不兼容,則返回null。
    表達式as 類型
    as 運算符類似於類型轉換,所不同的是,當轉換失敗時,as 運算符將返回null,而不是引發異常。
    示例:

    復制代碼 代碼如下:
    object o1=”SomeString”;
    object o2=5;
    string s1=o1 as string;//類型兼容s1=”SomeString”
    string s2=o2 as string;//s2=null


    is
    is 運算符用於檢查對象的類型是否與給定類型兼容(對象是該類型,或是派生於該類型)。
    表達式 is 類型
    示例:

    復制代碼 代碼如下:
    int i=10;
    if(iisobject)//true
    {}


    sizeof
    sizeof 運算符用於獲得值類型的大小(以字節為單位)。
    sizeof(type)
    sizeof 運算符僅適用於值類型,而不適用於引用類型。
    sizeof 運算符僅可用於 unsafe 模式。
    示例:

    復制代碼 代碼如下:
    unsafe
    {
     Console.WriteLine(“{0}”,sizeof(int));
    }

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved