當前位置:編程學習大全網 - 編程語言 - C#編程語言中,數據類型之間的轉換有哪些

C#編程語言中,數據類型之間的轉換有哪些

(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。 從float 到 double。 不存在向 char 類型的隱式轉換,因此其它整型的值不會自動轉換為 char 類型。 浮點型不能隱式地轉化為decimal型 隱式枚舉轉換 隱式枚舉轉換允許將十進制整數 0 轉換為任何枚舉類型。 隱式引用轉換 派生類向基類轉換 隱式引用轉換是指壹類引用類型之間的轉換,這種轉換總是可以成功,因此不需要在運行時進行任何檢查。 裝箱轉換 裝箱轉換允許將值類型隱式轉換為引用類型。 (2) 顯示轉換:也稱強制類型轉換。不能保證數據的正確性。 (type)(表達式) (3) 用戶自定義C#數據類型轉換 所有的用戶自定義轉換都是靜態的,要使用static關鍵字 用戶自定義轉換分顯示和隱示,它們用implicit(隱式轉換)或 explicit(顯示轉換)關鍵字聲明。 static 訪問修辭符 轉換修辭符 operator 轉換類型(參數) C#數據類型轉換示例:using System; 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) { returnn.value; } //用戶自定義從Number類型到string類型的隱式轉換 static public implicit operator string(Number n) { returnn.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。using System; class TestBoxing { 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,發生錯誤時會顯示錯誤信息。 usingSystem; 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=o1asstring;//類型兼容s1=”SomeString” string s2=o2asstring;//s2=null is is 運算符用於檢查對象的類型是否與給定類型兼容(對象是該類型,或是派生於該類型)。 表達式 is 類型 示例: int i=10; if(iisobject)//true {} sizeof sizeof 運算符用於獲得值類型的大小(以字節為單位)。 sizeof(type) sizeof 運算符僅適用於值類型,而不適用於引用類型。 sizeof 運算符僅可用於 unsafe 模式。

  • 上一篇:任意壹個自然數可以表示為四個非負整數的平方和嗎?
  • 下一篇:可編程控制器報關
  • copyright 2024編程學習大全網