Por qué no puedo utilizar el interfaz con el operador explícito? [duplicar]
-
19-09-2019 - |
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,
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 .