logo

Operator de coalescere nulă în C#

În C#, ?? operator este cunoscut sub denumirea de operator Null-coalescing. Va returna valoarea operandului său din stânga dacă nu este nul. Dacă este nul, atunci va evalua operandul din dreapta și va returna rezultatul acestuia. Sau dacă operandul din stânga evaluează ca non-null, atunci nu evaluează operandul din dreapta.

Sintaxă:



p ?? q>

Aici, p este stânga și q este operandul drept al lui ?? operator. Valoarea lui p poate fi de tip nullabil, dar valoarea lui q trebuie să fie de tip nullable. Dacă valoarea lui p este nulă, atunci returnează valoarea lui q. În caz contrar, va returna valoarea lui p.

Puncte importante:

java conține subșir
  • Cel ?? operatorul este folosit pentru a verifica valorile nule și puteți, de asemenea, să atribuiți o valoare implicită unei variabile a cărei valoare este nulă (sau tip null).
  • Nu ai voie sa supraincarci?? operator.
  • Este drept-asociativ.
  • In ?? operator, puteți utiliza expresia throw ca operand din dreapta ?? operator care face codul mai concis.
  • Ai voie sa folosesti?? operator cu tipuri de valori și tipuri de referință.

    Exemplu:








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

    >

    >

    Ieșire:

     Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40>
  • Cu ajutorul ?? operator pe care îl puteți preveni InvalidOperationException .

    Exemplu:




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

    >

    tutorial .net
    >

    Ieșire:

     Value of item_1 is: Value of item_2 is: 100>
  • Cu ajutorul ?? operator, puteți elimina multe condiții redundante if-else și puteți face codul compact și lizibil.

    Exemplu:




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

    >

    hopa conceptul în java
    >

    Ieșire:

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




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

    >

    >

    Ieșire:

     Value of item_1 is: Value of item_2 is: 200>
  • ?? operatorul poate fi imbricat. Acesta va face codul mai ușor de citit și, de asemenea, va reduce mai multe condiții dacă altfel.

    Exemplu:




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

    >

    delimitator java

    >

    Ieșire:

    Value of item_4 is: 500>