C 中is與as的區別 在C 中,is是用來判斷類型A能否轉化為類型B,一般用來作有繼承關係的父類與子類是否可以相互轉化的判斷。 而as是將類型A轉化為類型B,一般也是用來做子類與父類的轉換。 如下麵的例子,我們聲明三個類 class A { } class B : A { } class C { ...
C#中is與as的區別
在C#中,is是用來判斷類型A能否轉化為類型B,一般用來作有繼承關係的父類與子類是否可以相互轉化的判斷。
而as是將類型A轉化為類型B,一般也是用來做子類與父類的轉換。
如下麵的例子,我們聲明三個類
class A
{ }
class B : A
{ }
class C
{ }
可以看到,類B是由類A繼承來的。而C是一個獨立的類。下麵我們利用is與as來做測試。
class Program
{
public static void Main()
{
B b = new B();
if (b is A)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}
列印的結果為true,說明b類可以轉換為A類,但b類並沒有轉化為A類。
再看下麵的例子:
class Program
{
public static void Main()
{
B b = new B();
A a = b as A;
if (a != null)
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
}
}
列印結果為true,這也說明b類可以轉換為A類,而且已經將類b轉化為了A類型。
註意:既使b類不可以轉換為A類,使用is做判斷的時候,是可以通過編譯的,也不會拋出異常,只是會給出提示。而使用as是會報錯的,即通不過編譯