是否可以向String类添加一个新的运算符,类似于
string val = anotherVal ??? "Default Val";
并且像
一样工作string val = !String.IsNullOrEmpty(anotherVal) ? anotherVal : "Default Val";
答案 0 :(得分:8)
您无法为字符串类定义自己的运算符,并在C#中使用它们。 (F#允许您为任意类创建运算符,有点像扩展方法,但适用于其他成员类型。)
可以做的是编写扩展方法:
public static string DefaultIfEmpty(this string original, string defaultValue)
{
return string.IsNullOrEmpty(original) ? defaultValue : original;
}
并将其命名为:
string val = anotherValue.DefaultIfEmpty("Default Val");
如果您不想评估“默认”字符串,除非需要它,您可能会超载一个函数:
public static string DefaultIfEmpty(this string original,
Func<string> defaultValueProvider)
{
return string.IsNullOrEmpty(original) ? defaultValueProvider() : original;
}
并将其命名为:
string val = anotherValue.DefaultIfEmpty(() => "Default Val");