L'implementazione membro explict permettono disambiguazione dei membri di interfaccia con la stessa firma.
Senza implementazioni di membri dell'interfaccia di esplict sarebbe impossibile per una classe o una struttura avere implementazioni differenti di membri di interfaccia con la stessa firma e tipo di ritorno.
Perché l'implementazione esplicita di un'interfaccia non può essere pubblica? Quando un membro viene implementato esplicitamente, non è possibile accedervi tramite un'istanza di classe, ma solo attraverso un'istanza dell'interfaccia.
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();
.....
Le implementazioni dei membri dell'interfaccia di esplicazione non sono accessibili tramite istanze di classe o di struttura.
per l'interfaccia implicita, non è inoltre necessario specificare come pubblico, ma è consentito farlo e in realtà deve farlo. Quindi l'interfaccia che implica la logica pubblica non spiega realmente la domanda originale che vorrei dire. – liang
Per le interfacce implicite, il metodo è semplicemente un metodo che potrebbe essere privato. Solo la firma lo rende un'implementazione del metodo di interfaccia. Una definizione di interfaccia esplicita non può essere altro che pubblica. Vedo il tuo punto, ma il fatto che TBH autorizzi il pubblico sui metodi impliciti probabilmente si riferisce solo all'ordine in cui il compilatore fa le cose. –
'" ... poiché sarà sempre pubblico ... "'; Tecnicamente questo non è corretto, perché non è possibile chiamare la funzione esplicitamente implementata dall'esterno finché non si lancia l'oggetto per l'interfaccia. –