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

0 c# ternary-operator

背景

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

$value = "";
echo $value ?: "value was empty"; // same as $value == "" ? "value was empty" : $value;
Run Code Online (Sandbox Code Playgroud)

在JS中还有一个等价物:

var value = "";
var ret = value || "value was empty"; // same as var ret = value == "" ? "value was empty" : value;
Run Code Online (Sandbox Code Playgroud)

但在C#中,(据我所知)只有"完整"版本有效:

string Value = "";
string Result = Value == string.Empty ? "value was empty" : Value;
Run Code Online (Sandbox Code Playgroud)

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

研究

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

速记如果声明:C#

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

而这一个,但它与Java有关:

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

我试过了什么

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

string Value = "";
string Result = Value ?: "value was empty";
Run Code Online (Sandbox Code Playgroud)

(因为"无法使用JS的简写风格||操作并不适用于stringstring. ")

string Value = "";
string Result = Value || "value was empty";
Run Code Online (Sandbox Code Playgroud)

Tit*_*mir 13

字符串为空时没有简写.字符串的缩写是null:

string Value = null;
string Result = Value ?? "value was null";
Run Code Online (Sandbox Code Playgroud)


Val*_*Val 5

合并??运算符仅在上工作null,但是您可以使用扩展方法“自定义”行为:

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

您可以像这样使用它:

var s = stringValue.Coalesce("value was empty or null");
Run Code Online (Sandbox Code Playgroud)

但是我认为这并不比三元更好。

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