我使用以下代码:
string x = str1 ?? str2 ?? str3 ?? "No string";
但是,如果这些字符串(str1,str2,str3)中的任何一个是String.Empty,那么该怎么办?!= null?
我该如何处理这种情况?
答案 0 :(得分:7)
您无法使用??
。你可以使用Linq做这样的事情:
string x = new[]{ str1, str2, str3, "No string" }.First(x => !string.IsNullOrEmpty(x));
答案 1 :(得分:2)
我会写一个辅助方法:
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);
答案 2 :(得分:0)
您可以使用String.IsNullOrEmpty()
。
E.g。
String.IsNullOrEmpty(null) => true
String.IsNullOrEmpty("") => true
String.IsNullOrEmpty("hello, world!") => false