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
。但是,相同的邏輯適用於擴充套件方法,儘管宣告方法的方式不同。
有關在第一個示例中呼叫擴充套件方法的原因的更多資訊,請參閱擴充套件方法 - 空檢查文件。