【发布时间】:2017-09-26 19:42:31
【问题描述】:
有了我们可以在 C# 中做的所有很棒的事情,我想知道我们是否可以做类似下面的事情:
string totalWording =
{
if (isA)
return "Value A";
if (isB)
return "Value B";
if (isC)
return "Value C";
return "Default";
};
所以这与 ?: 非常相似,除了你可以有超过 2 个可能的结果
string totalWording = isA ? "Value A" : "Default";
我可以愉快地创建一个返回值的方法,但我非常喜欢能够立即看到简单的东西
private string GetTotalWording()
{
if (isA)
return "Value A";
if (isB)
return "Value B";
if (isC)
return "Value C";
return "Default";
}
我想知道是否有人有我可以使用的好东西,或者我是否只是靠祈祷为生。
编辑:
还有 func 选项,我想这是让我进入主题的原因,因为看起来您应该能够在声明值时直接使用函数..但这可能只是我
Func<string> getTotalWording = () =>
{
if (isA)
return "Value A";
if (isB)
return "Value B";
if (isC)
return "Value C";
return "Default";
};
【问题讨论】:
-
一个语句是真还是假,在你的方法中你正在检查 3 个不同的布尔值,我可以很容易地将你的 GetTotalWording 转换为三元 (?:) 表达式,但我不认为它是你的'正在寻找。例如,如果所有 3 个都为真,结果应该是
Value A吗? -
如果
isA和isC都为真,或者在任何给定时间只有一个为真,该怎么办? -
还是他只想拿第一件真实的事,不管后面的是否真实?
-
我提供的逻辑是分层的,所以先到先得。
-
在这种情况下,Amit 展示的嵌套三元组可以做到这一点,但在简单易读的代码上使用“聪明”的内衬是一个常见的错误。