C# - 短检查为null

时间:2011-03-24 07:40:27

标签: .net c#-4.0

如何替换以下代码

if (customer.Person!=null)
 Console.WriteLine(customer.Person.Name);

有这样的东西

Console.WriteLine(customer.Person.Name?? "unknown");

2 个答案:

答案 0 :(得分:11)

你不能,我害怕 - 没有什么比Groovy的空安全解除引用运算符更好了:(

我想你可以为Person创建一个“空对象” - 即一个真实实例,但所有属性都为null。然后你可以使用:

Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");

......但那太可怕了。 (它也没有检查customer是否为空。)

另一种选择是在Person上编写扩展方法:

public static string NameOrDefault(this Person person, string defaultName)
{
    return person == null ? defaultName : person.Name ?? defaultName;
}

然后:

Console.WriteLine(customer.Person.NameOrDefault("Unknown");

答案 1 :(得分:5)

您可以使用ternary operator

Console.WriteLine(customer.Person != null ? customer.Person.Name : "unknown");

不是最好看的代码,但仍然是单行代码。


编辑:请不要忘记使用IsNullOrWhiteSpace,以防您的应用程序逻辑处理空& null字符串相同。