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。但是,相同的邏輯適用於擴充套件方法,儘管宣告方法的方式不同。

有關在第一個示例中呼叫擴充套件方法的原因的更多資訊,請參閱擴充套件方法 - 空檢查文件。