我敢肯定這是一個愚蠢的問題,但爲什麼下面的代碼不會調用顯式操作符在子類MyBool上強制轉換?C#顯式運算符和繼承
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 };
}
}
則:
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());
}
產生輸出:假的,假的
是我寫在每個類的功能採取的明確操作功能的地方唯一的選擇?
它的工作原理就像預期。 – leppie 2011-06-06 12:08:20
我的問題是「爲什麼下面的代碼不會調用顯式操作符...?」不是「這個工作正常嗎?」。 – Andy 2011-06-07 09:53:34