logo

Null-koalescerande operatör i C#

I C#, ?? operatör är känd som Noll-koalescerande operatör. Den kommer att returnera värdet på sin vänstra operanden om den inte är null. Om den är null, kommer den att utvärdera den högra operanden och returnera dess resultat. Eller om den vänstra operanden utvärderas till icke-null, utvärderar den inte sin högra operande.

Syntax:



p ?? q>

Här är p den vänstra och q den högra operanden av ?? operatör. Värdet på p kan vara nollbar typ, men värdet på q måste vara icke-nullbar typ. Om värdet på p är null, returnerar det värdet på q. Annars kommer det att returnera värdet på p.

Viktiga punkter:

  • Den ?? operatorn används för att kontrollera nollvärden och du kan även tilldela ett standardvärde till en variabel vars värde är null (eller nollbar typ).
  • Du får inte överbelasta ?? operatör.
  • Det är högerassociativt.
  • I ?? operator, kan du använda throw-uttryck som en högerhandsoperand av ?? operatör som gör din kod mer kortfattad.
  • Du får använda ?? operator med värdetyper och referenstyper.

    Exempel:








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

    >

    >

    Produktion:

     Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40>
  • Med hjälp av ?? operatör du kan förhindra InvalidOperationException .

    Exempel:




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

    >

    array.sort i java
    >

    Produktion:

     Value of item_1 is: Value of item_2 is: 100>
  • Med hjälp av ?? operatör kan du ta bort många redundanta if-else-villkor och göra din kod kompakt och läsbar.

    Exempel:




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

    >

    >

    Produktion:

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

    >

    >

    Produktion:

     Value of item_1 is: Value of item_2 is: 200>
  • ?? operatorn kan kapslas. Det kommer att göra din kod mer läsbar och även reducera flera if-else-villkor.

    Exempel:

    dator uppfann vilket år




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

    >

    >

    Produktion:

    Value of item_4 is: 500>