C#中的三元运算符有没有简写?

背景

在PHP中有三元运算符的简写:

$value = "";
echo $value ?: "value was empty"; // same as $value == "" ? "value was empty" : $value;

在JS中也有一个等价的:

var value = "";
var ret = value || "value was empty"; // same as var ret = value == "" ? "value was empty" : value;

但在C#中,有(只要我知道)只有“完整”版本的作品:

string Value = "";
string Result = Value == string.Empty ? "value was empty" : Value;

所以我的问题是:C#中的三元运算符有没有简写,如果没有,是否有解决方法?

研究

我发现了以下问题,但他们指的是使用三元运算符作为if-else的简写:

速记如果语句:C#

使用条件?:(三元)运算符的好处

这一个,但它涉及Java:

在Java中是否有像PHP这样的三元运算符的短版本?

我所尝试过的

使用PHP的速记风格(由于语法错误而失败)

string Value = "";
string Result = Value ?: "value was empty";

使用JS的简写风格(失败,因为“ ||运算符不适用于stringstring 。”)

string Value = "";
string Result = Value || "value was empty";

字符串为空时没有简写。 字符串为null时有一个简写:

string Value = null;
string Result = Value ?? "value was null";

凝聚?? 运算符仅适用于null ,但您可以使用扩展方法“定制”行为:

public static class StringExtensions
{
    public static string Coalesce(this string value, string @default)
    {
        return string.IsNullOrEmpty(value)
            ? value
            : @default;
    }
}

你可以像这样使用它:

var s = stringValue.Coalesce("value was empty or null");

但我不认为它比三元组好。

注意: @允许您使用保留字作为变量名称。

链接地址: http://www.djcxy.com/p/84283.html

上一篇: Is there a shorthand for the ternary operator in C#?

下一篇: Build expression trees to represent if