Standardmäßig ist jedes Mitglied in einer Schnittstelle öffentlich und dies muss so sein, weil die Schnittstelle einen bestimmten Prototyp definiert. Eine Klasse oder Struktur kann jedoch von mehreren Schnittstellen erben, und es kann durchaus sein, dass diese Schnittstellen dieselben Methoden oder Eigenschaften haben. Beachten Sie Folgendes:
public interface ITest
{
string Id { get; }
}
public interface ITest1
{
string Id { get; }
}
public class TestSeparately : ITest, ITest1
{
//Why an explicit interface member implementation, don't have modifier
string ITest.Id
{
get { return "ITest"; }
}
string ITest1.Id
{
get { return "ITest1"; }
}
}
Nun, wenn es einen Weg gibt Klasse zu werfen, dass die Art und Weise zu verbinden, implizit und Zugriffs Mitglieder fragen Eigenschaftswert Id von TestSeparately, das heißt Rückgabewert von TestSeparately.Id ist was? Welcher Schnittstellencompiler sollte implizit auf die ID umstellen und sie zurückgeben? Ist es ITest.Id oder ITest1.Ist? Sehen Sie sich das Problem an, ja, es ist immer kein Modifikator in expliziter Implementierung und explizitem Casting erforderlich, um zu bestimmen, welche Schnittstelle angesprochen werden soll und wie ich bereits sagte, ist öffentlich der einzige Zugriffsmodifikator, der gewaltsam und nicht veränderbar ist.