如何替换以下代码
if (customer.Person!=null)
Console.WriteLine(customer.Person.Name);
Run Code Online (Sandbox Code Playgroud)
有这样的东西
Console.WriteLine(customer.Person.Name?? "unknown");
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
你不能,我害怕 - 没有像Groovy的无效安全解除引用运算符:(
我想你可以为Person创建一个"空对象" - 即一个真实实例,但所有属性都为null.然后你可以使用:
Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");
Run Code Online (Sandbox Code Playgroud)
......但那太可怕了.(它也没有检查是否为customer空.)
另一种选择是在Person上编写扩展方法:
public static string NameOrDefault(this Person person, string defaultName)
{
return person == null ? defaultName : person.Name ?? defaultName;
}
Run Code Online (Sandbox Code Playgroud)
然后:
Console.WriteLine(customer.Person.NameOrDefault("Unknown");
Run Code Online (Sandbox Code Playgroud)
您可以使用三元运算符:
Console.WriteLine(customer.Person != null ? customer.Person.Name : "unknown");
Run Code Online (Sandbox Code Playgroud)
不是最好看的代码,但仍然是单行.
编辑:不要忘记使用IsNullOrWhiteSpace,以防您的应用程序逻辑将空字符串和空字符串视为相同.
| 归档时间: |
|
| 查看次数: |
8575 次 |
| 最近记录: |