检查布尔值为true时是否有简写?
例如:
if (autoConnect) Connect();
我们可以做到
return IsOpen() ? true : false;
但我不能
autoConnect ? Connect();
运行。有没有办法做到这一点?
答案 0 :(得分:5)
你可以写一个扩展方法:
public static void _(this bool b, Action ifTrue)
{
if (b) { ifTrue(); }
}
然后你可以写:
autoConnect._(Connect);
虽然显然这不是很易读,但不推荐使用。
答案 1 :(得分:2)
不,无法让autoConnect ? Connect();
工作。
只返回bool值,不需要ternary operator:
return IsOpen();
或者,当您要测试的值可以使用??
运算符为空时返回一些值,对于示例:
return a ?? b;
如果a
为空,则返回b
。
答案 2 :(得分:2)
答案 3 :(得分:2)
要回答你的问题,不,没有简写要做
if (autoConnect) Connect();
任何更短的。此外,您提出的解决方案只能保存3个字符,这对于完全可读的代码来说是不必要的高尔夫球。
答案 4 :(得分:1)
正如赛义德所说,if (autoConnect) Connect();
是最短路的。尽管如此,这只是在编写代码时。每当编译器编译代码时,它将与使用if (autoConnect) { Connect(); }
或if (autoConnect == true) { Connect(); }
相同。
你应该使用你发现最干净或最简单的阅读材料。