logo

Opérateur de coalescence nulle en C#

En C#, ?? opérateur est connu sous le nom d’opérateur de fusion nulle. Il renverra la valeur de son opérande de gauche s'il n'est pas nul. S'il est nul, il évaluera l'opérande de droite et renverra son résultat. Ou si l’opérande de gauche est évalué comme étant non nul, alors il n’évalue pas son opérande de droite.

Syntaxe:



p ?? q>

Ici, p est l'opérande gauche et q est l'opérande droit de ?? opérateur. La valeur de p peut être de type nullable, mais la valeur de q doit être de type non nullable. Si la valeur de p est nulle, alors il renvoie la valeur de q. Sinon, il renverra la valeur de p.

Les points importants:

  • Le ?? L'opérateur est utilisé pour vérifier les valeurs nulles et vous pouvez également attribuer une valeur par défaut à une variable dont la valeur est nulle (ou de type nullable).
  • Vous n'avez pas le droit de surcharger ?? opérateur.
  • C'est associatif à droite.
  • Dans ?? opérateur, vous pouvez utiliser l'expression throw comme opérande droit de ?? opérateur qui rend votre code plus concis.
  • Vous êtes autorisé à utiliser ?? opérateur avec des types valeur et des types référence.

    Exemple:








    // C# program to illustrate how to use> // ?? operator with value types and> // reference types> using> System;> > namespace> example {> > class> Program {> >static> void> Main(>string>[] args)> >{> > >// Reference types> >string> item_1 =>null>;> >string> item_2 =>'techcodeview.com'>;> >string> item_3 =>'GFG'>;> > >string> item_4 = item_1 ?? item_2;> >item_3 = item_4 ?? item_2;> > >Console.WriteLine(>'Value of item_4 is: {0} '>+> >'Value of item_3 is: {1}'>, item_4, item_3);> > >// Value types> >int> ? item_5 =>null>;> > >Program obj =>new> Program();> > >// Using ?? operator assigns> >// the value of a value type> >// and also you are allowed> >// to use method with ?? operator> >int> ? item_6 = item_5 ?? obj.Add(10, 30);> >Console.WriteLine(>'Value of item_6 is: {0}'>, item_6);> >}> > >// Method> >public> int> Add(>int> a,>int> b)> >{> >int> result = a + b;> >return> result;> >}> }> }>

    >

    ils sont chanteurs
    >

    Sortir:

     Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40>
  • Avec l'aide de ?? opérateur, vous pouvez empêcher InvalidOperationException .

    Exemple:




    // C# program to illustrate how ??> // operator prevent the> // InvalidOperationException> using> System;> > namespace> example {> > class> GFG {> > >// Main Method> >static> void> Main(>string>[] args)> >{> >// Creating items of nullable types> >int> ? item_1 =>null>;> > >/*> >Here if you use this commented part,> >then this statement will give you an> >InvalidOperationException. So to> >overcome this problem we use ?? operator> >int? item_2 = item_1.Value;> >*/> > >// With the help of ?? operator we> >// assign a default value to the item_2> >// And the value of item_1 is null.> >int> ? item_2 = item_1 ?? 100;> >Console.WriteLine(>'Value of item_1 is: {0}'>, item_1);> >Console.WriteLine(>'Value of item_2 is: {0}'>, item_2);> >}> }> }>

    >

    en quelle année l'ordinateur a-t-il été inventé
    >

    Sortir:

     Value of item_1 is: Value of item_2 is: 100>
  • Avec l'aide de ?? opérateur, vous pouvez supprimer de nombreuses conditions if-else redondantes et rendre votre code compact et lisible.

    Exemple:




    // C# program to illustrate how ??> // operator replaces if-else statements> using> System;> > namespace> example {> > class> GFG {> > >// Main Method> >static> void> Main(>string>[] args)> >{> >// Creating items of nullable types> >int> ? item_1 =>null>;> > >int> ? item_2;> > >if> (item_1.HasValue) {> >item_2 = item_1;> >}> >else> {> >item_2 = 200;> >}> >Console.WriteLine(>'Value of item_1 is: {0}'>, item_1);> >Console.WriteLine(>'Value of item_2 is: {0}'>, item_2);> >}> }> }>

    >

    >

    Sortir:

     Value of item_1 is: Value of item_2 is: 200>


    chaîne sous-chaîne



    // C# program to illustrate how ??> // operator replaces if-else statements> using> System;> > namespace> example {> > class> GFG {> > >// Main Method> >static> void> Main(>string>[] args)> >{> >// Creating items of nullable types> >int> ? item_1 =>null>;> > >// Using ?? operator> >int> ? item_2 = item_1 ?? 200;> >Console.WriteLine(>'Value of item_1 is: {0}'>, item_1);> >Console.WriteLine(>'Value of item_2 is: {0}'>, item_2);> >}> }> }>

    >

    >

    shweta tiwari

    Sortir:

     Value of item_1 is: Value of item_2 is: 200>
  • ?? L'opérateur peut être imbriqué. Cela rendra votre code plus lisible et réduira également plusieurs conditions if-else.

    Exemple:




    // C# program to illustrate how> // we use nested ?? operator> using> System;> > namespace> example {> > class> GFG {> > >// Main Method> >static> void> Main(>string>[] args)> >{> >// Creating items of nullable types> >int> ? item_1 =>null>;> >int> ? item_2 =>null>;> >int> ? item_3 = 500;> > >// Nested ?? operator> >int> ? item_4 = item_1 ?? item_2 ?? item_3;> > >Console.WriteLine(>'Value of item_4 is: {0} '>, item_4);> >}> }> }>

    >

    >

    Sortir:

    Value of item_4 is: 500>