当你只想要一个结果时,是否有三元合成糖?

时间:2017-07-30 23:03:23

标签: c# ternary-operator syntactic-sugar

在C#中,我多次想要根据表达式检索字符串。大多数时候我在视图中这样做。

因此,例如,如果我想根据布尔值isComplete打印“完整”,我需要这样做:

<span class="badge">@(isComplete? "Complete" : "")</span>

语言中是否有任何缩短此语法的选项,所以我不需要也有空字符串选项?

这样的东西
<span class="badge">@(isComplete => "Complete")</span>

有一些方法可以自己做,比如一个接收字符串和布尔值的函数,如果布尔值为假,则返回null或空,但也许它已经存在于语言中。

2 个答案:

答案 0 :(得分:1)

你可以简单地声明一个这样的函数:

public String GetTextOrEmpty( bool control, String text )
{
    return control? text : "";
}

然后像这样调用它:

<span class="badge">@(GetTextOrEmpty( isComplete, "Complete" ))</span>

答案 1 :(得分:0)

还没有,但这里有几个选择:

<span class="badge">@isComplete.Complete()</span> - 扩展方法

<span class="badge">@Complete(isComplete)</span> - 方法

<span class="badge">@(Complete)isComplete</span> - 自定义类型explicit operator

<span class="badge">@isComplete</span> - 自定义布尔类型override ToString