VR開(kāi)發(fā)入門教程25:面向?qū)ο笾L問(wèn)修飾符
來(lái)源:
奇酷教育 發(fā)表于:
2017-06-23 17:34:53
Is和asis:語(yǔ)法:對(duì)象 is 類型檢查一個(gè)對(duì)象是否兼容于其他指定的類型,并返回一個(gè)Bool值,如果一個(gè)對(duì)象是某個(gè)類型或是其父類型的話就返回為t
Is和as
is:
語(yǔ)法:對(duì)象 is 類型
檢查一個(gè)對(duì)象是否兼容于其他指定的類型,并返回一個(gè)Bool值,如果一個(gè)對(duì)象是某個(gè)類型或是其父類型的話就返回為true,否則的話就會(huì)返回為false。永遠(yuǎn)不會(huì)拋出異常
如果對(duì)象引用為null,那么is操作符總是返回為false,因?yàn)闆](méi)有對(duì)象可以檢查其類型
as
1、檢查對(duì)象類型的兼容性,并返回轉(zhuǎn)換結(jié)果,如果不兼容則返回null;
2、不會(huì)拋出異常;
3、如果結(jié)果判斷為空,則強(qiáng)制執(zhí)行類型轉(zhuǎn)換將拋出NullReferenceException異常;
4、用as來(lái)進(jìn)行類型轉(zhuǎn)換的時(shí)候,所要轉(zhuǎn)換的對(duì)象類型必須是目標(biāo)類型或者轉(zhuǎn)換目標(biāo)類型的派生類型
使用as操作符有如下2點(diǎn)限制:
1.類型不兼容的情況 (編譯器自動(dòng)阻擋)
2.轉(zhuǎn)換的目標(biāo)類型不能為null的情況(編譯器自動(dòng)阻擋)
as與is的區(qū)別
1、as在轉(zhuǎn)換的同時(shí)兼判斷兼容性,如果無(wú)法進(jìn)行轉(zhuǎn)換,則 as 返回 null(沒(méi)有產(chǎn)生新的對(duì)象)而不是引發(fā)異常。有了as我想以后就不要再用try-catch來(lái)做類型轉(zhuǎn)換的判斷了。因此as轉(zhuǎn)換成功要判斷是否為null。
2、as是引用類型類型的轉(zhuǎn)換或者裝箱轉(zhuǎn)換,不能用于值類型的轉(zhuǎn)換。如果是值類型只能結(jié)合is來(lái)強(qiáng)制轉(zhuǎn)換
3、is只是做類型兼容判斷,并不執(zhí)行真正的類型轉(zhuǎn)換。返回true或false,不會(huì)返回null,對(duì)象為null也會(huì)返回false。
4、as模式的效率要比is模式的高,因?yàn)榻柚鷌s進(jìn)行類型轉(zhuǎn)換的化,需要執(zhí)行兩次類型兼容檢查。而as只需要做一次類型兼容,一次null檢查,null檢查要比類型兼容檢查快。
訪問(wèn)修飾符
字段、方法、屬性都可以叫做類的成員Member,它們都需要定義訪問(wèn)級(jí)別。訪問(wèn)級(jí)別的用處在于控制成員在哪些地方可以被訪問(wèn)。
訪問(wèn)修飾符:public/private/internal/protected
private : 私有成員, 在類的內(nèi)部才可以訪問(wèn)。
public : 公共成員,完全公開(kāi),沒(méi)有訪問(wèn)限制。
protected : 保護(hù)成員,該類內(nèi)部和繼承類中可以訪問(wèn)。
internal: 當(dāng)前程序集內(nèi)可以訪問(wèn)。程序集:exe\dll中
internal protected:internal 和 protected的并集, 同一個(gè)程序集中的所有類,以及所有程序集中的子類。
修飾符可以修飾的內(nèi)容:
類(class)和結(jié)構(gòu)(struct)只能用public, internal來(lái)修飾
成員(屬性、方法)能用以上5種來(lái)修飾
默認(rèn)沒(méi)有訪問(wèn)修飾符的默認(rèn)規(guī)則:
類中字段和方法默認(rèn)的訪問(wèn)修飾符是private
類(class)和結(jié)構(gòu)(struct)默認(rèn)的訪問(wèn)修飾符是internal
注:程序集(Assembly)-一般指一個(gè)Exe可執(zhí)行文件或類庫(kù)(DLL文件)