相关疑难解决方法(0)

为什么"bool?"上没有解除短路操作符?

为什么不bool?支持解除&&||?他们本可以提升truefalse操作员,这些操作员会间接地增加&&和提升||.

运营商|&已取消和落实正确的三值逻辑.但当然,他们并没有像||和那样短路&&.

问题是为什么他们在创建规范时决定不提升这些操作符.所以"就像这样,因为规范说的如此"对"为什么?"没有答案.

当抬起truefalsenull既不是true也不是false:

public static bool operator true(bool? x) 
{
    return x.HasValue && x.Value
}

public static bool operator false(bool? x) 
{
  return x.HasValue && !x.Value
}
Run Code Online (Sandbox Code Playgroud)

这将产生&&||表现就像他们的非短路对应物.不同之处在于false && anythingtrue || anything将短路(falsetrue在这两个例子中没有编译时间常数).

这与 …

c# operator-overloading short-circuiting lifted-operators

18
推荐指数
1
解决办法
930
查看次数

为什么不存在void {}?

我想知道为什么void()是prvalue voidvoid{}不存在......?请参阅以下答案:https://stackoverflow.com/a/37708167/293195

例如在上下文中:

template<typename R>
R foo(){
 return R{};
}
Run Code Online (Sandbox Code Playgroud)

c++ c++17

7
推荐指数
1
解决办法
222
查看次数

寻找布尔语句的解释

我在我正在使用的库中发现了这个语句。它应该检查集群中的当前节点是否是领导者。这是声明:(!(cluster.Leader?.IsRemote ?? true))

为什么不直接使用(cluster.Leader?.IsRemote)?(忽略 ! 运算符,我知道它是如何工作的)

这种方法有什么好处吗?

c# boolean

2
推荐指数
2
解决办法
72
查看次数