型別轉換
顯示轉換
隱式轉換
使用者自定義轉換
(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.當在...