La implementación miembro de explict permite desambiguación de elementos de interfaz con la misma firma.
Sin implementaciones explícitas de miembro de interfaz sería imposible que una clase o estructura tuviera implementaciones diferentes de miembros de interfaz con la misma firma y el mismo tipo de retorno.
¿Por qué la implementación explícita de una interfaz no puede ser pública? Cuando un miembro se implementa explícitamente, no se puede acceder a través de una instancia de clase, sino solo a través de una instancia de la interfaz.
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();
.....
Las implementaciones de miembros de la interfaz Explict no son accesibles a través de instancias de clase o estructura.
para la interfaz implícita, tampoco es necesario especificar que es público, pero está permitido hacerlo, y en realidad debe hacerlo. Entonces, la interfaz que implica lógica pública realmente no explica la pregunta original que diría. – liang
Para interfaces implícitas, el método es simplemente un método que podría ser privado. Su firma por sí sola lo convierte en una implementación de método de interfaz. Una definición de interfaz explícita no puede ser otra cosa que pública. Veo su punto, pero TBH que permite el público en métodos implícitos probablemente solo se relaciona con el orden en que el compilador hace las cosas. –
'" ... ya que siempre será público ... "'; Técnicamente, esto no es correcto, porque no se puede llamar a la función explícitamente implementada desde el exterior hasta que se lanza el objeto a la interfaz. –