if (true) Shorthand

本文关键字:Shorthand true if | 更新日期: 2023-09-27 18:04:23

检查布尔值是否为真时是否有速记?
例子:

if (autoConnect) Connect();

我们可以做

return IsOpen() ? true : false;

但是我不能得到

autoConnect ? Connect();  

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

if (true) Shorthand

您可以编写一个扩展方法:

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(); }相同。

你应该使用你认为最干净或最容易阅读的内容。