Null 条件运算符可以与扩展方法一起使用
扩展方法可以处理空引用 ,但无论如何都可以使用 ?.
进行空值检查。
public class Person
{
public string Name {get; set;}
}
public static class PersonExtensions
{
public static int GetNameLength(this Person person)
{
return person == null ? -1 : person.Name.Length;
}
}
通常,该方法将被触发 null
引用,并返回 -1:
Person person = null;
int nameLength = person.GetNameLength(); // returns -1
使用 ?.
时,null
引用不会触发该方法,类型为 int?
:
Person person = null;
int? nameLength = person?.GetNameLength(); // nameLength is null.
这种行为实际上是从 ?.
运算符的工作方式中预期的:它将避免对 null 实例进行实例方法调用,以避免 NullReferenceExceptions
。但是,相同的逻辑适用于扩展方法,尽管声明方法的方式不同。
有关在第一个示例中调用扩展方法的原因的更多信息,请参阅扩展方法 - 空检查文档。