隱式引用轉換包括以下幾類:
●從任何引用型別到物件型別的轉換
●從類型別s到類型別t的轉換,其中s是t的派生類。
●從類型別s到介面型別t的轉換,其中類s實現了介面t。
●從介面型別s到介面型別t的轉換,其中t是s的父介面。
從元素型別為ts的陣列型別s向元素型別為tt的陣列型別t轉換,這種轉換需要滿足下列條件:
●s和t只有元素的資料型別不同,但它們的維數相同。
●ts和tt都是引用型別。
●存在從ts到tt的隱式引用轉換
●從任何陣列型別到system.array的轉換。
●從任何代表型別到system.delegate的轉換。
●從任何資料型別或代表型別到system.icloneable的轉換。
●從空型別(null)到任何引用型別的轉換。
比如,下面的程式無法通過編譯,因為陣列的元素型別是值型別,c#中不存在這樣的隱式轉換。
程式清單6-3:
using system;
class test
} 而下面這段程式則是正確的:
程式清單6-4:
using system;
class class1
{}class class2:class1
{}class test
} 程式6-5很有趣,它給出了我們常用的值型別在系統環境中的原型定義。
程式6-5:
using system;
class test
}程式的輸出結果是:
system.single;
system.double;
system.sbyte;
system.byte;
system.int16;
system.int32;
system.int64;
system.string;
c 隱式轉換
class string string s1 a 錯誤 不能做隱式char string轉換 string s2 10 可以 呼叫explicit string int n string s3 string 10 可以 呼叫explicit string int n 再呼叫預設的複製建構函式 str...
C 隱式轉換
眾所周知,c 的基本型別中並非完全的對立,部分資料型別之間是可以進行隱式轉換的。所謂隱式轉換,是指不需要使用者干預,編譯器私下進行的型別轉換行為。很多時候使用者可能都不知道進行了哪些轉換。c 物件導向的多型特性,就是通過父類的型別實現對子類的封裝。通過隱式轉換,你可以直接將乙個子類的物件使用父類的型...
C 隱式轉換
include using namespace std class a a int main 程式輸出 constructor destructor a a 10 這樣的語法是通過的,為什麼?由於發生了建構函式的隱式轉換,隱式轉換這樣的規則同意用乙個引數來初始化物件,這會呼叫類中帶有乙個引數的建構函...