Question

    

Cette question a déjà une réponse ici:

         

Je me posais des questions sur les signes ?? en code C # . Pourquoi est-ce? Et comment puis-je l'utiliser?

Qu'en est-il de int? ? Est-ce un int nullable?

Voir aussi:

  

?? Opérateur de coalescence nul - > Que signifie coalescer?

Était-ce utile?

La solution

C'est ce qu'on appelle "l'opérateur de coalescence nul". et fonctionne à peu près comme ceci:

Au lieu de faire:

int? number = null;
int result = number == null ? 0 : number;

Vous pouvez maintenant faire:

int result = number ?? 0;

Autres conseils

Il s'agit de opérateur de coalescence nul . Il a été introduit en C # 2.

Le résultat de l'expression a ?? b est a si ce n'est pas null, ou b sinon. b n'est pas évalué s'il n'est pas nécessaire.

Deux belles choses:

  • Le type global de l'expression est celui du deuxième opérande, ce qui est important lorsque vous utilisez des types de valeur nullable:

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (Notez que vous ne pouvez pas utiliser un type de valeur non nullable comme premier opérande - ce serait inutile.)

  • Les règles d'associativité vous permettent de chaîner cela très facilement. Par exemple:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

Cela utilisera la première valeur non nulle en dehors de l'adresse de livraison, de facturation ou de contact.

C'est l'opérateur de coalesce. C'est essentiellement un raccourci pour ce qui suit

x ?? new Student();
x != null ? x : new Student();

Documentation MSDN sur l'opérateur

C'est le nouvel opérateur Null Coalesce.

Le ?? L'opérateur renvoie l'opérande de gauche s'il n'est pas nul ou renvoie l'opérande de droite.

Vous pouvez lire à ce sujet ici: http://msdn.microsoft.com/en-us/ bibliothèque / ms173224 (VS.80) .aspx

C’est un raccourci pour:

Text = (category == null ? "Home" : category);

c'est l'opérateur de coalesce. il retournera une autre valeur si la première valeur est null

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

il vérifie si la catégorie est NULL - dans ce cas, la valeur NULL est remplacée par "Accueil".

L’une de mes utilisations préférées de l’opérateur de coalescence nulle est d’éviter les déclarations dans mon code (je pense que si les instructions sont laides et encombrent la plupart du temps). Par exemple, prenons un scénario typique dans lequel on pourrait choisir de charger quelque chose du cache si disponible, sinon charger à partir de la base de données et remplir le cache.

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

Pour moi, c'est un code moche. Je suis peut-être un peu anal, mais pourquoi ne pas le modifier à la place?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

Il suit de plus près SRP et est plus propre et plus facile à lire, OMI. Les fonctions exécutent exactement une fonction clairement identifiable chacune.

si la catégorie est nulle, le texte devient "Accueil"

.

Retourne la première valeur non nulle. Pratique.

?? Opérateur null-coalescent

int? est un int nullable, ce qui signifie qu'il peut avoir les valeurs d'un int normal et null. Lisez this pour plus de détails.

Il s'agit de l'opérateur null-coalescing . Il est utilisé avec les types nullables (entre autres). désolé:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top