Ich bin sicher, dass dies eine dumme Frage ist, aber warum ruft der folgende Code nicht den expliziten Operator für den Cast auf die Kindklasse MyBool?
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 };
}
}
dann:
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());
}
Ergibt die Ausgabe: false, false
Ist meine einzige Option, Funktionen für jede Klasse zu schreiben, um die expliziten Operatorfunktionen zu ersetzen?