c 型別轉換

2021-09-30 07:34:34 字數 2834 閱讀 6005

型別轉換

顯示轉換

隱式轉換

使用者自定義轉換

(1)    隱式轉換:一般是低型別向高型別轉化,能夠保證值不發生變化。

隱式數值轉換:

從 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) 使用者自定義轉換

所有的使用者自定義轉換都是靜態的,要使用static關鍵字

使用者自定義轉換分顯示和隱示,它們用implicit(隱式轉換)或 explicit(顯示轉換)關鍵字宣告。

static 訪問修辭符 轉換修辭符 operator 轉換型別(引數)

示例:using system;

struct number

//使用者自定義整型到number型的隱式轉換

static public implicit operator number(int value)

// 使用者自定義從number型到整型的顯示轉換

static public explicit operator int(number n)

//使用者自定義從number型別到string型別的隱式轉換

static public implicit operator string(number n) }

class test

} 使用system.convert類

將乙個基本資料型別轉換為另乙個基本資料型別。

使用parse方法

大部份預定義值型別都有這個靜態方法,用來將相應的文字轉化為相應的值型別。

裝箱和取消裝箱

裝箱和取消裝箱使值型別能夠與 object 型別相互轉換。

裝箱轉換允許將「值型別」隱式轉換為「引用型別」。將「值型別」的值裝箱的操作包括:分配乙個物件例項並將「值型別」的值複製到該例項中。

示例:此例將整數變數 i 通過裝箱轉換為物件 o。此例顯示物件保留了內容的原始副本,即 123。

using system;

class testboxing 

", i);       //456

console.writeline("the object-type value = ", o);     //123 是i的複製值}}

取消裝箱轉換:取消裝箱轉換允許將引用型別顯式轉換為值型別。

取消裝箱操作包括以下兩個步驟:首先檢查該物件例項是否是某個給定的值型別的裝了箱的值,然後將值從例項中複製出來。

示例:下面的示例闡釋無效取消裝箱的情況,即錯誤的取消裝箱如何導致 invalidcastexception。通過使用 try 和 catch,發生錯誤時會顯示錯誤資訊。

using system;

public class unboxingtest

catch (invalidcastexception e)

error: incorrect unboxing.",e);}}

} 其它轉換用運算子

asas 運算子用於執行引用型別的顯式型別轉換。 如果要轉換的型別與指定型別相容,轉換就會成功;如果型別不相容,則返回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

isis 運算子用於檢查物件的型別是否與給定型別相容(物件是該型別,或是派生於該型別)。

表示式 is 型別

示例:int i=10;

if ( i is object) //true

{}sizeof

sizeof 運算子用於獲得值型別的大小(以位元組為單位)。

sizeof(type)

sizeof 運算子僅適用於值型別,而不適用於引用型別。

sizeof 運算子僅可用於 unsafe 模式。

示例:unsafe

」,sizeof(int));

}

mysql型別轉換c 型別轉換 C 型別轉換

一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...

C 型別轉換

在程式中,進行型別轉換是常見的事。那麼在 c 中支援以前語言的型別轉換方法,即用型別名進行強行轉換,例如 object objtest new newtype newtype newvalue newtype objtest 但是這樣轉換,有個嚴重的問題,就是在把 objtest 強轉換成 newt...

C 型別轉換

型別轉換是將一種型別的值對映為另一種型別的值。型別轉換實際上包含有自動隱含和強制的兩種。型別的自動隱式轉換 c 語言編譯系統提供的內部資料型別的自動隱式轉換規則如下 1.程式在執行算術運算時,低型別可以轉換為高型別。2.在賦值表示式中,右邊表示式的值自動隱式轉換為左邊變數的型別,並賦值給它。3.當在...