处理C#中的空字符串?操作者

时间:2011-08-02 10:38:38

标签: c#

我使用以下代码:

string x = str1 ?? str2 ?? str3 ??  "No string";

但是,如果这些字符串(str1,str2,str3)中的任何一个是String.Empty,那么该怎么办?!= null?

我该如何处理这种情况?

3 个答案:

答案 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