C# - 更高效的三元运算符
C# - A more efficient ternary operator
我正在编写一个程序,我想在其中检查一个字符串是否等于 ""
,如果不等于,则使用它,如果是,则使用默认值。我知道我可以做到 string != "" ? string : "default value"
,但是,我觉得这样效率很低,因为我一直在输入 string
。当然,写成string
对我来说是没有问题的,但是,如果在另一个项目中,我必须引用一个长包名的字符串,那就有点烦人了。
根据 DavidG 的选择和帮助 link,您可以使用此扩展功能。
public static string IfEmpty(this string str, string alternate)
{
return str?.Length == 0 ? str : alternate;
}
(这将 return 备用字符串,即使 'str' 为空)
并用作mystring.IfEmpty("something else")
来源:What is the difference between String.Empty and "" (empty string)?。
此外,您不需要引用很长的字符串。
目前没有可以做你想做的操作员。
但实际上有一个 "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";
我正在编写一个程序,我想在其中检查一个字符串是否等于 ""
,如果不等于,则使用它,如果是,则使用默认值。我知道我可以做到 string != "" ? string : "default value"
,但是,我觉得这样效率很低,因为我一直在输入 string
。当然,写成string
对我来说是没有问题的,但是,如果在另一个项目中,我必须引用一个长包名的字符串,那就有点烦人了。
根据 DavidG 的选择和帮助 link,您可以使用此扩展功能。
public static string IfEmpty(this string str, string alternate)
{
return str?.Length == 0 ? str : alternate;
}
(这将 return 备用字符串,即使 'str' 为空)
并用作mystring.IfEmpty("something else")
来源:What is the difference between String.Empty and "" (empty string)?。
此外,您不需要引用很长的字符串。
目前没有可以做你想做的操作员。
但实际上有一个 "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";