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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要明確實現(xiàn)接口?

為什么要明確實現(xiàn)接口?

夢里花落0921 2019-10-09 16:40:03
那么,顯式實現(xiàn)接口的好用例到底是什么?僅僅是為了使使用該類的人們不必查看intellisense中的所有那些方法/屬性?
查看完整描述

3 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

如果您使用相同的方法和不同的實現(xiàn)來實現(xiàn)兩個接口,則必須顯式實現(xiàn)。


public interface IDoItFast

{

    void Go();

}

public interface IDoItSlow

{

    void Go();

}

public class JustDoIt : IDoItFast, IDoItSlow

{

    void IDoItFast.Go()

    {

    }


    void IDoItSlow.Go()

    {

    }

}


查看完整回答
反對 回復 2019-10-09
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

隱藏非首選成員很有用。例如,如果您同時實現(xiàn)這兩種方法IComparable<T>,IComparable通常最好隱藏隱藏的IComparable重載,以免給人以為您可以比較不同類型的對象。同樣,某些接口(例如)也不符合CLS IConvertible,因此,如果您未明確實現(xiàn)該接口,則要求CLS符合性的語言的最終用戶將無法使用您的對象。(如果BCL實現(xiàn)者沒有隱藏原語的IConvertible成員,那將是災難性的:)


另一個有趣的注釋是,通常使用這樣的構造意味著顯式實現(xiàn)接口的構造只能通過對接口類型進行裝箱來調用它們。您可以使用通用約束來解決此問題:


void SomeMethod<T>(T obj) where T:IConvertible

將int傳遞給int時,它不會裝箱。


查看完整回答
反對 回復 2019-10-09
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

明確實現(xiàn)接口的一些其他原因:


向后兼容性:萬一ICloneable接口發(fā)生變化,實現(xiàn)方法類成員不必更改其方法簽名。


更干凈的代碼:如果將Clone方法從ICloneable中刪除,則會出現(xiàn)編譯器錯誤,但是,如果隱式實現(xiàn)該方法,則可能會得到未使用的“孤立”公共方法


強類型化:為了舉例說明超級貓的故事,這將是我的首選示例代碼,當您直接將其作為實例成員調用時,ICloneable顯式實現(xiàn)允許Clone()強類型化MyObject:


public class MyObject : ICloneable

{

  public MyObject Clone()

  {

    // my cloning logic;  

  }


  object ICloneable.Clone()

  {

    return this.Clone();

  }

}


查看完整回答
反對 回復 2019-10-09
  • 3 回答
  • 0 關注
  • 665 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號