C#資料類型轉換的幾種形式

來源:互聯網
上載者:User

本篇文章是對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類
將一個基礎資料型別 (Elementary Data Type)轉換為另一個基礎資料型別 (Elementary Data Type)。
使用Parse方法
大部份預定義實值型別都有這個靜態方法,用來將相應的文本轉化為相應的實值型別。

裝箱和unboxing
裝箱和unboxing使實值型別能夠與 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的複製值
}


unboxing轉換:unboxing轉換允許將參考型別顯式轉換為實值型別。
unboxing操作包括以下兩個步驟:首先檢查該對象執行個體是否是某個給定的實值型別的裝了箱的值,然後將值從執行個體中複製出來。
C#資料類型轉換樣本:
下面的樣本闡釋無效unboxing的情況,即錯誤的unboxing如何導致 InvalidCastException。通過使用 try 和 catch,發生錯誤時會顯示錯誤資訊。

複製代碼 代碼如下:
public class UnboxingTest
{
 public static void Main()
 {
  int intI=123;
  object o=intI;//裝箱
  try
  { //unboxing無效,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));
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.