C#中有两个奇怪的运算符:
如果我理解正确的话,这些运算符可以用在我想使用的类型中,而不是布尔表达式中,并且我不想为布尔提供隐式转换。
假设我有以下课程:
public class MyType
{
public readonly int Value;
public MyType(int value)
{
Value = value;
}
public static bool operator true (MyType mt)
{
return mt.Value > 0;
}
public static bool operator false (MyType mt)
{
return mt.Value < 0;
}
}
因此,我可以编写以下代码:
MyType mTrue = new MyType(100);
MyType mFalse = new MyType(-100);
MyType mDontKnow = new MyType(0);
if (mTrue)
{
// Do something.
}
while (mFalse)
{
// Do something else.
}
do
{
// Another code comes here.
} while (mDontKnow)
但是,对于以上所有示例,仅执行true运算符。那么C#中的错误运算符有什么用呢?