C# Language L'opérateur Null-conditionnel peut être utilisé avec la méthode d'extension


Exemple

La méthode d'extension peut fonctionner sur des références nulles , mais vous pouvez utiliser ?. pour annuler la vérification de toute façon.

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;
    }
}

Normalement, la méthode sera déclenchée pour null références null et retournera -1:

Person person = null;
int nameLength = person.GetNameLength(); // returns -1

En utilisant ?. la méthode ne sera pas déclenchée pour null références null , et le type est int? :

Person person = null;
int? nameLength = person?.GetNameLength(); // nameLength is null.

Ce comportement est en fait attendu de la façon dont le ?. L'opérateur fonctionne: il évitera de faire des appels de méthode d'instance pour des instances NULL, afin d'éviter les NullReferenceExceptions . Cependant, la même logique s’applique à la méthode d’extension, malgré la différence sur la manière dont la méthode est déclarée.

Pour plus d'informations sur la raison pour laquelle la méthode d'extension est appelée dans le premier exemple, reportez-vous à la documentation relative aux méthodes d'extension - null .