亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

is 和 as 操作符

Original 2016-11-09 14:59:58 487
abstract: 在C#語言中進(jìn)行類型轉(zhuǎn)換的另外一種方式是使用is和as操作符。is檢查對象是否兼容于指定類型,返回Boolean值true或false。注意,is操作符永遠(yuǎn)不拋出異常,例如以下代碼:Object o = new Object(); Boolean b1 = (o is Object);  

 在C#語言中進(jìn)行類型轉(zhuǎn)換的另外一種方式是使用is和as操作符。is檢查對象是否兼容于指定類型,返回Boolean值true或false。注意,is操作符永遠(yuǎn)不拋出異常,例如以下代碼:

Object o = new Object();
Boolean b1 = (o is Object);    //返回true
Boolean b2 = (o is Employee);    //返回false

  如果對象引用null,is操作符總是返回false,因?yàn)闆]有可以檢查其類型的對象。

is操作符通常像下面這樣使用: 

if(o is Employee)
{
    Employee e = (Employee)o;
}

  在上述代碼中,CLR實(shí)際檢查兩次對象類型。is操作符首先核實(shí)o是否兼容于Employee類型,如果是,在if語句塊內(nèi)進(jìn)行類型轉(zhuǎn)換,CLR再次核實(shí)o是否引用一個(gè)Employee。CLR的類型檢測增加了安全性,但無疑會(huì)對性能造成一些損失。這是因?yàn)镃LR首先必須判斷變量o引用的對象的實(shí)際類型。然后,CLR必須遍歷繼承層次結(jié)構(gòu),用每個(gè)基類型去核對指定的類型(Employee)。由于這是一個(gè)相當(dāng)常用的編程模式,所以c#專門提供了as操作符,目的就是簡化這種代碼的寫法,同時(shí)提升其性能。

Employee e = o as Employee;
if(e != null)
{
     //在if中使用e
}

  在這段代碼中,CLR核實(shí)o是否兼容于Employee類型;如果是,as返回對同一個(gè)對象的非null引用。如果o不兼容與Employee類型,as 返回null。注意,as操作符造成CLR只檢驗(yàn)一次對象類型。if語句只檢測e是否為null;這個(gè)檢查速度比檢驗(yàn)對象的類型要快的多。

     as 操作符的工作方式與強(qiáng)制類型轉(zhuǎn)換一樣,只是它永遠(yuǎn)不會(huì)拋出異常,如果對象不能轉(zhuǎn)型,結(jié)果就是null。所以,正確做法是檢查最終生成的引用是否為null。


Release Notes

Popular Entries