【发布时间】:2011-07-09 08:29:42
【问题描述】:
您可以重载运算符 true 和 false 我查看了示例并找到了这个 http://msdn.microsoft.com/en-us/library/aa691312%28v=vs.71%29.aspx
我完全不明白它们是如何工作的。我知道如果我写 if(obj) 并且 true 返回 true 然后 if 被执行。 false 返回什么并不重要。然而,虚假是如何工作的?在该文档中,建议 && 运算符使用它。我写了下面的代码。我不知道如何让 && 编译。 ||也给了我一个编译错误。我如何得到虚假被调用?以及如何获得 && 和 ||上班?
var ts= new MyTimeSpan();// ts += ts;
if (ts){ Console.WriteLine("Is true"); }
else { Console.WriteLine("not true"); }
//Console.WriteLine(ts && ts ? "Y" : "N");
class MyTimeSpan
{
public static MyTimeSpan operator +(MyTimeSpan t, MyTimeSpan t2) { return new MyTimeSpan(); }
public static bool operator true(MyTimeSpan t) { return true; }
public static bool operator false(MyTimeSpan t) { return false; }
}
【问题讨论】:
-
你想做什么?时间跨度是真还是假是什么意思?
-
@Mark:我在上一个问题/示例中搞乱了 + 运算符,这导致了我这个问题,我使用了同一个类。这个名字是个假人,我只是在学习操作是如何工作的。
-
您还没有为 & 或 | 声明运算符- 查看您提供的文档链接,说明您需要声明这些运算符,它们需要返回 MyTimeSpan 对象并且您需要为真假声明运算符。该文档还解释了 true 和 false 运算符的使用位置。
-
@James:出于某种原因,我在想 && 好像左右两边都是真实的,但没有看到它的逻辑和相关性。现在我看到它在两个操作之间做了一个 and 并检查它是否是真的。这对我来说很奇怪。原因 1 && 2 在 C# 中是非法的,而在 C++ 中它是正确的,因为没有应用逻辑与 codepad.org/9iCaqzQ2