我正在创建一个程序,我想在其中检查字符串是否等于""
,如果它不使用它,但如果是,则使用默认值。我知道我可以做string != "" ? string : "default value"
但是,我觉得这样效率很低,因为我一直打字string
。当然,写出string
对我来说没问题,但是,如果在另一个项目中,我必须引用一个包长名称的字符串,这会更烦人。
答案 0 :(得分:3)
目前没有任何操作员可以做你想做的事。
但实际上有一个“Default-or-Empty Coalesce operator”的提议,在这里:
https://github.com/dotnet/csharplang/issues/183
目前你能做的最好的事情是声明一个像这样的扩展方法:
public static string NullIfEmpty(this string str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
并像这样使用它:
var foo = yourString.NullIfEmpty() ?? "default value";
答案 1 :(得分:1)
根据DavidG的选项和有用的链接,您可以使用此扩展功能。
public static string IfEmpty(this string str, string alternate)
{
return str?.Length == 0 ? str : alternate;
}
(即使'str'为空,这也会返回备用字符串)
并用作mystring.IfEmpty("something else")
来源:What is the difference between String.Empty and "" (empty string)?。
此外,您不需要引用非常长的字符串。