也许有,我不知道,如果是这样,我很乐意开悟。我希望能够使用类似于?:运算符的东西,但不必包含:而不必将结果赋给变量,如下所示:
q?r();
在语义上与
相同if (q)
{
r();
}
编辑:我应该表达自己更清楚。我正在寻找一种摆脱if和s的方法,并用更具功能性的风格表达条件语句。
干杯, /基督教
答案 0 :(得分:5)
if (q) r();
这就像你能得到它一样简洁。
答案 1 :(得分:3)
有时您可以使用LINQ保存编写if
语句。
例如,而不是:
int CountItemsLargerThanFive(IEnumerable<int> collection)
{
int count = 0;
foreach (var item in collection)
{
if (item > 5)
{
count++;
}
}
return count;
}
你可以写:
int CountItemsLargerThanFive(IEnumerable<int> collection)
{
return collection.Count(item => item > 5);
}
没有if
的!
还有许多其他情况,其中if
等控制结构可以被LINQ替换。
答案 2 :(得分:1)
如果要执行单个语句,可以省略括号并将其写在一行:
if (q) r();
通常情况下,将条件和代码放在单独的行上会更具可读性,并且始终包含括号,但如果条件和代码都很简单,那么可读性应该不是问题。
示例:
if (line > 0) builder.AppendLine();
作为替代:
if (line > 0) {
builder.AppendLine();
}
答案 3 :(得分:1)
正如其他人所说,坚持明显的路线。
为了好玩,这里有一种方法可以像代表一样使用条件运算符(请不要这样做):
(q ? (Action)r : () => { })();
如果有真正的else
(q ? (Action)trueAction : falseAction)();
答案 4 :(得分:-2)
你也可以使用:x ?? 0
这是空检查