Estoy seguro de que esta es una pregunta estúpida, pero ¿por qué el siguiente código no llama al operador explícito para el molde en la clase hija MyBool?C# Operadores Explícitos y Herencia
public class DataType
{
public static explicit operator bool(DataType D)
{
return false;
}
public static explicit operator DataType(bool B)
{
return new DataType();
}
}
public class MyBool : DataType
{
public bool Value;
public MyBool()
{
Value = false;
}
public static explicit operator bool(MyBool B)
{
return B.Value;
}
public static explicit operator MyBool(bool B)
{
return new MyBool() { Value = B };
}
}
a continuación:
List<DataType> Types = new List<DataType>();
Types.Add(new MyBool() { Value = true });
Types.Add(new MyBool() { Value = false });
foreach (DataType T in Types)
{
bool Value = (bool)T;
MessageBox.Show(Value.ToString());
}
produce la salida: falsa, falsa
es mi única opción para escribir funciones en cada clase para tomar el lugar de las funciones de operador explícitas?
funciona igual que espera. – leppie
Mi pregunta era "¿por qué el siguiente código no llama al operador explícito ...?" no "¿está funcionando correctamente?". – Andy