logo

Operator ničelnega združevanja v C#

V C#, ?? operater je znan kot operator ničelnega združevanja. Vrnil bo vrednost svojega levega operanda, če ta ni ničelna. Če je ničelna, bo ovrednotil desni operand in vrnil rezultat. Če pa je levi operand ovrednoten kot neničelen, potem ne ovrednoti svojega desnega operanda.

Sintaksa:



p ?? q>

Tukaj je p levi in ​​q desni operand od ?? operater. Vrednost p je lahko ničelnega tipa, vrednost q pa ne sme biti ničelnega tipa. Če je vrednost p ničelna, potem vrne vrednost q. V nasprotnem primeru bo vrnil vrednost p.

Pomembne točke:

  • ?? se uporablja za preverjanje ničelnih vrednosti, privzeto vrednost pa lahko dodelite tudi spremenljivki, katere vrednost je ničelna (ali ničelna vrsta).
  • Ne smete preobremeniti ?? operater.
  • Je desno asociativno.
  • v ?? lahko uporabite izraz throw kot desni operand ?? operator, ki naredi vašo kodo bolj jedrnato.
  • Ali smete uporabljati ?? operator z vrednostnimi tipi in referenčnimi tipi.

    primer:








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

    >

    string.format
    >

    Izhod:

     Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40>
  • S pomočjo ?? operaterja lahko preprečite InvalidOperationException .

    primer:




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

    >

    >

    Izhod:

     Value of item_1 is: Value of item_2 is: 100>
  • S pomočjo ?? lahko odstranite številne odvečne pogoje if-else in naredite svojo kodo kompaktno in berljivo.

    primer:

    niz v javanskih metodah




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

    >

    >

    Izhod:

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

    >

    >

    Izhod:

     Value of item_1 is: Value of item_2 is: 200>
  • ?? operator je lahko ugnezden. To bo vašo kodo naredilo bolj berljivo in zmanjšalo število pogojev if-else.

    primer:




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

    >

    vrsta kopice
    >

    Izhod:

    Value of item_4 is: 500>