C#之接口介紹
什么是接口呢?
在生活中大家其實(shí)接觸過(guò)不少接口的例子,比如手機(jī)充電器有micro USB,Type-C,lighting等,電源線有兩頭,三頭,使用正確的插頭就能夠插到對(duì)應(yīng)的接口中,但是如果不匹配,就不能契合.

此處引用微軟C#文檔對(duì)于接口的定義:

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interface
所謂接口,就是需要實(shí)現(xiàn)類(lèi)必須實(shí)現(xiàn)指定的方法和屬性.
說(shuō)回代碼中,我舉一個(gè)例子,假設(shè)我們有一家飯店,我們要招聘能做菜的廚師,可能有的小伙伴會(huì)這么寫(xiě)代碼:

很好,那么讓我們用代碼模擬開(kāi)店,會(huì)發(fā)生什么呢?

先使用創(chuàng)造者之力實(shí)例化一個(gè)工具人,然后招聘他,完美,沒(méi)有報(bào)錯(cuò).
但是這個(gè)廚師除了頂著一個(gè)廚師的頭銜之外,什么能力都沒(méi)有,是個(gè)無(wú)能力者,那么,讓我們賦予他一項(xiàng)能力吧:

很好,這下我們?cè)谡衅傅臅r(shí)候就能檢查應(yīng)聘人員的廚藝了.本期專(zhuān)欄到此結(jié)束

我們的飯店成功開(kāi)張了,過(guò)了段時(shí)間,我們需要招聘新的廚師,但是來(lái)的卻和之前的廚師不一樣,怎么回事呢?這個(gè)時(shí)候,我們就需要完善一下世界觀(重構(gòu)代碼):

不好,程序報(bào)錯(cuò)了,工具人二號(hào)沒(méi)有通過(guò)招聘,這時(shí)候他十分不滿:你是不是看不起我?我也會(huì)做菜,為什么不要我,就因?yàn)槲沂枪ぞ呷藛?/span>?
我們來(lái)檢查一下這段,雖然江湖菜廚師也會(huì)做菜,但是因?yàn)槲覀冊(cè)趯?xiě)招聘函數(shù)的時(shí)候,對(duì)參數(shù)固定為了廚師類(lèi),所以當(dāng)我們傳入一個(gè)江湖菜廚師類(lèi)型的時(shí)候,程序就會(huì)報(bào)錯(cuò)了,這種時(shí)候,我們可以像下面這樣優(yōu)化代碼:

將接口引入我們的代碼之后,將函數(shù)的傳入?yún)?shù)改為接口類(lèi)型,這樣一來(lái),實(shí)現(xiàn)了做菜接口的廚師類(lèi)和江湖菜廚師都可以成功通過(guò)招聘的.

有一天我們的飯店來(lái)了幾個(gè)神秘人,說(shuō)他們也要來(lái)應(yīng)聘,但是恰好我們的招聘官拉肚子來(lái)不了,不能直接判斷應(yīng)聘者的能力,這個(gè)時(shí)候我們就只好重新再寫(xiě)一個(gè)函數(shù)來(lái)檢測(cè)他們的實(shí)力了,世界觀再度擴(kuò)展(代碼重構(gòu))

如上圖所示,我們可以通過(guò) is 關(guān)鍵字來(lái)判斷變量是否屬于指定類(lèi)型,用在接口上的話,就是判斷該變量是否屬于實(shí)現(xiàn)了對(duì)應(yīng)接口的類(lèi).

我們還可以用 as 關(guān)鍵字來(lái)實(shí)現(xiàn)類(lèi)型轉(zhuǎn)換,如果不能成功轉(zhuǎn)換,會(huì)返回 null

不過(guò)好像混進(jìn)了一些奇怪的家伙.
就先到這里吧.