检查布尔值是否为真时是否有速记?
例子:
if (autoConnect) Connect();
我们可以做
return IsOpen() ? true : false;
但是我不能得到
autoConnect ? Connect();
运行。有办法做到这一点吗?
您可以编写一个扩展方法:
public static void _(this bool b, Action ifTrue)
{
if (b) { ifTrue(); }
}
那么你可以写:
autoConnect._(Connect);
虽然这显然不是很好读,不建议使用
唯一可以缩短的是删除条件运算符:
return IsOpen() ? true : false;
和
return IsOpen();
不行,没办法让autoConnect ? Connect();
工作。
只返回bool值,不需要三元操作符:
return IsOpen();
或者,当您想要测试的值可以使用??
操作符为空时,您返回一些值,例如:
return a ?? b;
如果a
为空,则返回b
回答你的问题,没有,没有速记
if (autoConnect) Connect();
任何短。此外,您提出的解决方案只保存了3个字符,这是对原本完全可读的代码的不必要的破坏。
旁边说if (autoConnect) Connect();
是最短的路。虽然,这只是在编写代码的时候。无论何时编译器编译代码,它都将与使用if (autoConnect) { Connect(); }
或if (autoConnect == true) { Connect(); }
相同。
你应该使用你认为最干净或最容易阅读的内容。