【发布时间】:2011-08-02 18:42:09
【问题描述】:
我正在使用以下代码:
string x = str1 ?? str2 ?? str3 ?? "No string";
但是,如果这些字符串(str1、str2、str3)中的任何一个是 String.Empty,即 !=null 怎么办?
我该如何处理这种情况?
【问题讨论】:
标签: c#
我正在使用以下代码:
string x = str1 ?? str2 ?? str3 ?? "No string";
但是,如果这些字符串(str1、str2、str3)中的任何一个是 String.Empty,即 !=null 怎么办?
我该如何处理这种情况?
【问题讨论】:
标签: c#
你不能用??。你可以使用 Linq 做这样的事情:
string x = new[]{ str1, str2, str3, "No string" }.First(x => !string.IsNullOrEmpty(x));
【讨论】:
x != null 只是复制了原始解决方案而没有解决问题:-)
GetNonEmpty(params string[] args)) 声明的辅助方法中,那么您可以跳过数组并调用 GetNonEmpty(str1, str2, "No string")
Util 课程看起来很恶心。
我会写一个辅助方法:
public static string Coalesce(string defaultValue, params string[] values) {
if (string.IsNullOrEmpty(defaultValue))
throw new ArgumentException("defaultValue");
foreach (var value in values) {
if (!string.IsNullOrEmpty(value))
return value;
}
return defaultValue;
}
用法:
var data = StringHelpers.Coalesce("No text", s1, s2, s3, s4);
这不是特别有用,但你甚至可以创建一个扩展方法(在第一个参数前附加“this”),也许改成一个更“流畅”的名称,并编写如下内容:
var data = "No Text".IfEmptyOrNull(s1, s2, s3);
【讨论】:
您可以使用String.IsNullOrEmpty()。
例如
String.IsNullOrEmpty(null) => true
String.IsNullOrEmpty("") => true
String.IsNullOrEmpty("hello, world!") => false
【讨论】: