0

检查布尔值是否为真时是否有简写?
例子:

if (autoConnect) Connect();

我们可以做的

return IsOpen() ? true : false;

但我无法得到

autoConnect ? Connect();  

跑步。有没有办法做到这一点?

4

5 回答 5

5

你可以写一个扩展方法:

public static void _(this bool b, Action ifTrue)
{
    if (b) { ifTrue(); }
}

那么你可以写:

autoConnect._(Connect);

虽然显然这不是很可读,也不推荐。

于 2014-05-21T17:07:26.350 回答
3

您唯一可以缩短的是删除条件运算符

return IsOpen() ? true : false;

并且只是

return IsOpen();
于 2014-05-21T17:00:51.167 回答
2

不,没有办法开始autoConnect ? Connect();工作。

只需返回布尔值,不需要三元运算符

return IsOpen(); 

或者,当您要测试的值可以使用??运算符为空时,您可以返回一些值,例如:

 return a ?? b;

如果a为空,则返回b

于 2014-05-21T17:00:00.510 回答
2

要回答你的问题,不,没有速记

if (autoConnect) Connect();

任何更短。此外,您提出的解决方案仅节省了 3 个字符,这是对原本完全可读的代码的不必要的打高尔夫球。

于 2014-05-21T17:04:19.313 回答
1

正如 siride 所说,这if (autoConnect) Connect(); 是最短的方法。不过,这只是在编写代码时。每当编译器编译代码时,它将变得与使用if (autoConnect) { Connect(); } or相同if (autoConnect == true) { Connect(); }

你应该使用你认为最干净或最容易阅读的任何东西。

于 2014-05-21T17:03:16.957 回答