Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

me pregunto si alguien sabe la razón por la que no se le permite utilizar las interfaces con los operadores implícitos o explícitos?

por ejemplo. esto plantea error de tiempo de compilación:

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

"conversiones definidas por el usuario hacia o desde una interfaz no se les permite"

Gracias,

¿Fue útil?

Solución

Sección 10.9.3 de la # spec C hechizos esto. La versión corta es que está anulado de manera que el usuario puede estar seguro de que las conversiones entre los tipos de referencia y las interfaces de tener éxito si y sólo si el tipo de referencia en realidad implementa esa interfaz, y que cuando que la conversión tiene lugar que es en realidad está haciendo referencia al mismo objeto.

Definición de una conversión implícita o explícita entre los tipos de referencia da al usuario la expectativa de que habrá un cambio en la referencia; después de todo, la misma referencia no puede ser ambos tipos. Por otra parte, el usuario hace no tienen la misma expectativa para las conversiones entre los tipos de referencia y los tipos de interfaz.

  

conversiones definidas por el usuario no se les permite convertir de o a interfaz de tipo . En particular, esta restricción asegura que no hay transformaciones definidas por el usuario se producen al convertir a un interfaz de tipo , y que una conversión a un interfaz de tipo tiene éxito sólo si el objeto siendo convertido en realidad implementa el interfaz de tipo especificado .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top