簡體   English   中英

為什么顯式實現接口不能公開?

[英]Why Explicit Implementation of a Interface can not be public?

我在Class中有方法,它是Interface的實現。 當我做它顯式實現時,我遇到了編譯器錯誤

The modifier 'public' is not valid for this item

為什么不允許public顯示接口?

顯式接口實現的原因是避免名稱沖突,最終結果是在調用這些方法之前必須將對象顯式地轉換為該接口。

您可以認為這些方法不是在類上公開,而是直接綁定到接口。 沒有理由指定public / private / protected,因為它總是公開的,因為接口不能有非公共成員。

(Microsoft 概述了顯式接口實現

明確的成員實現允許消除具有相同簽名的接口成員的歧義。

如果沒有明確的接口成員實現,那么類或結構就不可能具有相同簽名和返回類型的接口成員的不同實現。

為什么顯式實現接口不能公開? 顯式實現成員時,不能通過類實例訪問它,而只能通過接口的實例訪問它。

public interface IPrinter
{
   void Print();
}
public interface IScreen
{
   void Print();
}

public class Document : IScreen,IPrinter
{
    void IScreen.Print() { ...}
    void IPrinter.Print() { ...} 
}

.....
Document d=new Document();
IScreen i=d;
IPrinter p=d;
i.Print();
p.Print();
.....

無法通過類或結構實例訪問Explict接口成員實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM