¿Por qué la implementación explícita de una interfaz no puede ser pública?

Tengo un método en Class que es la implementación de Interface. Cuando lo hice Implementación explícita obtuve un error de comstackción

The modifier 'public' is not valid for this item 

¿Por qué no está permitido tener public para la implementación de interfaz explícita?

El motivo de una implementación de interfaz explícita es evitar las colisiones de nombres con el resultado final de que el objeto debe ser lanzado explícitamente a esa interfaz antes de llamar a esos métodos.

Puede pensar que estos métodos no son públicos en la clase, sino que están vinculados directamente a la interfaz. No hay ninguna razón para especificar público / privado / protegido ya que siempre será público ya que las interfaces no pueden tener miembros no públicos.

(Microsoft tiene una visión general sobre la implementación explícita de la interfaz )

La implementación del miembro explict permite la desambiguación de los miembros de la interfaz con la misma firma.

Sin implementaciones explicitas de miembros de la interfaz, sería imposible que una clase o una estructura tuviera implementaciones diferentes de miembros de la 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.