在C#中有两个奇怪的运算符:
如果我理解这个权利,这些操作符可以用于我想使用的类型,而不是一个布尔表达式,我不想提供隐式转换为bool。
让我们说我有一个下面的类:
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)
然而对于上面的所有例子,只有真实的操作符被执行。那么C#中的false运算符有什么好处呢?
注意:更多示例可以找到here,here和here。