usar una que puede programacion porque interfaz interfaces instancia heredar declaracion declara cómo crear clase caracteristicas c# .net type-conversion explicit

c# - que - una interfaz puede heredar de una clase



¿Por qué no puedo usar la interfaz con el operador explícito? (1)

Me pregunto si alguien sabe la razón por la cual no se te permite usar interfaces con los operadores implícitos o explícitos.

Por ejemplo, esto aumenta el error de tiempo de compilación:

public static explicit operator MyPlayer(IPlayer player) { ... }

"las conversiones definidas por el usuario hacia o desde una interfaz no están permitidas"

Gracias,


La Sección 10.9.3 de la especificación de C # explica esto. La versión corta es no permitida, de modo que el usuario puede estar seguro de que las conversiones entre los tipos de referencia y las interfaces tienen éxito si y solo si el tipo de referencia realmente implementa esa interfaz, y que cuando ocurre esa conversión se hace referencia al mismo objeto.

La definición de una conversión implícita o explícita entre los tipos de referencia ofrece al usuario la expectativa de que habrá un cambio en la referencia; después de todo, la misma referencia no puede ser de ambos tipos. Por otro lado, el usuario no tiene la misma expectativa de conversiones entre los tipos de referencia y los tipos de interfaz.

Las conversiones definidas por el usuario no se pueden convertir desde o a tipos de interfaz . En particular, esta restricción garantiza que no se produzcan transformaciones definidas por el usuario al convertir a un tipo de interfaz , y que una conversión a un tipo de interfaz solo tenga éxito si el objeto que se está convirtiendo realmente implementa el tipo de interfaz especificado.