1、is運算符:
用於檢查對象是否與給定類型相容。如果所提供的運算式非空,並且所提供的對象可以強制轉換為所提供的類型而不會導致引發異常,則 is 運算式的計算結果將是 true。
注意:
1) is 運算子只考慮引用轉換、裝箱轉換和unboxing轉換。不考慮其他轉換,如使用者定義的轉換。
2) is會影響效能。
using System;
class Fruit
{
}
class Apple:Fruit
{
public int i=1;
}
class Conversion
{
static void Main()
{
Fruit f=new Apple();
//is:判斷f是否相容於Apple類,is只返回Tru or False
if(f is Apple)
{
Apple a=(Apple)f;
Console.WriteLine(a.i);
Console.ReadLine();
}
}
}
2、as運算符:
用於在相容的參考型別之間執行轉換。as 運算子類似於強制轉換,所不同的是,當轉換失敗時,運算子將產生空,而不是引發異常。更嚴格地說,這種形式的運算式
注意:
1)as 運算子只執行引用轉換和裝箱轉換。as 運算子無法執行其他轉換,如使用者定義的轉換,這類轉換應使用 cast 運算式來執行。
2)as運算符在效能上比is快。
using System;
class Fruit
{
}
class Apple:Fruit
{
public int i=1;
}
class Conversion
{
static void Main()
{
Fruit f=new Apple();
//as:判斷f是否相容於Apple類,相容時返回對Apple對象的引用,並將其賦於a;不相容時,返回為Null
Apple a=f as Apple;
if(a!=null)
{
Console.WriteLine(a.i);
Console.ReadLine();
}
}
}