第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

什么是空接口?

什么是空接口?

C#
眼眸繁星 2022-12-24 09:43:11
我正在使用的代碼有一個(gè)空界面:public interface ICube {}它沒有方法或?qū)傩?。一些類?shí)現(xiàn)ICube而其他接口繼承自ICube.請(qǐng)有人告訴我 ICube 界面有什么好處?
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

您應(yīng)該從 MSDN 上閱讀有關(guān)Interface Design

https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/interface

? 如果您需要一些通用 API 由一組類型(包括值類型)支持,請(qǐng)務(wù)必定義一個(gè)接口。

? 如果您需要在已經(jīng)從其他類型繼承的類型上支持其功能,請(qǐng)考慮定義一個(gè)接口。

X 避免使用標(biāo)記接口(沒有成員的接口)。

如果需要將類標(biāo)記為具有特定特征(標(biāo)記),通常使用自定義屬性而不是接口。

? 務(wù)必提供至少一種類型,它是接口的實(shí)現(xiàn)。

這樣做有助于驗(yàn)證接口的設(shè)計(jì)。例如,List 是 IList 接口的實(shí)現(xiàn)。

? 務(wù)必提供至少一個(gè)使用您定義的每個(gè)接口的 API(一種將接口作為參數(shù)的方法或類型化為接口的屬性)。

這樣做有助于驗(yàn)證界面設(shè)計(jì)。例如,List.Sort 使用 System.Collections.Generic.IComparer 接口。

X 不要將成員添加到以前發(fā)布的接口中。

更多參考:空接口空接口代碼有味道嗎?

標(biāo)記界面 標(biāo)記界面 的用途是什么?


查看完整回答
反對(duì) 回復(fù) 2022-12-24
?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

這稱為“標(biāo)記界面”。有時(shí)它們被用來表示一個(gè)類是用于特定目的的。這不是一種理想的做法。


雖然我使用了標(biāo)記界面,但這里是它們?cè)斐傻膯栴}的說明。假設(shè)我有一個(gè)List<ICube>. 也許我將它作為方法參數(shù)接收。


public interface ICube {} // It's empty!


public void DoSomethingWithTheseCubes(List<ICube> cubes)

{

    foreach(var cube in cubes)

    {

        // what do I do with this cube?

    }

}

你可以看到我卡在哪里。ICube只是一個(gè)標(biāo)記接口,所以它沒有自己的方法或?qū)傩?。我?duì)它無能為力。這可能會(huì)導(dǎo)致我將每個(gè)立方體轉(zhuǎn)換為其他類型,這樣我就可以用它做一些事情。


public void DoSomethingWithTheseCubes(List<ICube> cubes)

{

    foreach(var cube in cubes)

    {

        (SomeOtherType)cube.DoSomething();

    }

}

但是如果我轉(zhuǎn)換它,我會(huì)引發(fā)運(yùn)行時(shí)錯(cuò)誤,因?yàn)槲铱赡懿淮_定每個(gè)對(duì)象的實(shí)際運(yùn)行時(shí)類型是什么。如果我知道運(yùn)行時(shí)類型是什么,那么我應(yīng)該這樣做:


public void DoSomethingWithTheseCubes(List<SomeOtherType> things)

{

    foreach(var thing in things)

    {

        thing.DoSomething();

    }

}

我們不能絕對(duì)肯定會(huì)遇到這個(gè)問題,但使用標(biāo)記界面會(huì)引起它。它正在將接口用于其預(yù)期目的之外的其他用途。它更像是一個(gè)屬性甚至是評(píng)論。


接口有兩種協(xié)同工作的用途:首先,它描述類實(shí)現(xiàn)的成員。其次,它允許我們將實(shí)現(xiàn)接口的類轉(zhuǎn)換為該接口。標(biāo)記接口兩者都不做。它們?cè)试S我們將對(duì)象轉(zhuǎn)換為沒有成員的類型。這充其量是無用的,而在最壞的情況下它是有害的,因?yàn)樗鼤?huì)導(dǎo)致更多有問題的演員表。


查看完整回答
反對(duì) 回復(fù) 2022-12-24
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)