【发布时间】:2008-08-28 20:06:01
【问题描述】:
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# 中的 false 运算符有什么用呢?
【问题讨论】:
-
现代文档可以在docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 找到。文档建议没有理由再定义此运算符,因为 C# 2.0 添加了可空类型。