我使用下面的代碼:在C#中處理空字符串?運營商
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?
我該如何處理這種情況?
我會寫一個輔助方法:
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);
這不是特別有用,但你甚至可以創建一個擴展方法(附加在第一面前「這個」參數),也許改成一個更「流利」的名稱,並寫下類似內容:
var data = "No Text".IfEmptyOrNull(s1, s2, s3);
You ca不與??
。你可以用Linq做這樣的事情:
string x = new[]{ str1, str2, str3, "No string" }.First(x => !string.IsNullOrEmpty(x));
你可以使用String.IsNullOrEmpty()
。
E.g.
String.IsNullOrEmpty(null) => true
String.IsNullOrEmpty("") => true
String.IsNullOrEmpty("hello, world!") => false
這是一個相當尷尬的使用模式,不是嗎?我應該澄清 - 擴展方法是一個尷尬的使用模式。 – dotnetnate
是的,它看起來像紅寶石與「1.minutes_from_now」表達式 – Vasea