if(true)速记

时间:2014-05-21 16:58:01

标签: c# operators shorthand shorthand-if

检查布尔值为true时是否有简写?
例如:

if (autoConnect) Connect();

我们可以做到

return IsOpen() ? true : false;

但我不能

autoConnect ? Connect();  

运行。有没有办法做到这一点?

5 个答案:

答案 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)

您唯一可以缩短的是删除conditional operator

return IsOpen() ? true : false;

只是

return IsOpen();

答案 3 :(得分:2)

要回答你的问题,不,没有简写要做

if (autoConnect) Connect();

任何更短的。此外,您提出的解决方案只能保存3个字符,这对于完全可读的代码来说是不必要的高尔夫球。

答案 4 :(得分:1)

正如赛义德所说,if (autoConnect) Connect();是最短路的。尽管如此,这只是在编写代码时。每当编译器编译代码时,它将与使用if (autoConnect) { Connect(); }if (autoConnect == true) { Connect(); }相同。

你应该使用你发现最干净或最简单的阅读材料。