I C#, ?? operatør er kendt som Null-koalescerende operatør. Den returnerer værdien af dens venstre operand, hvis den ikke er nul. Hvis den er nul, vil den evaluere den højre operande og returnere sit resultat. Eller hvis den venstre operand evalueres til ikke-nul, så evaluerer den ikke dens højre operand.
Syntaks:
p ?? q>
Her er p den venstre og q er den højre operand af ?? operatør. Værdien af p kan være en nullbar type, men værdien af q skal være en ikke-nullbar type. Hvis værdien af p er nul, returnerer den værdien af q. Ellers vil den returnere værdien af p.
semantisk fejl
Vigtige punkter:
- Det ?? operator bruges til at kontrollere nulværdier, og du kan også tildele en standardværdi til en variabel, hvis værdi er null (eller nullbar type).
- Du må ikke overbelaste ?? operatør.
- Det er højreassociativt.
- I ?? operator, kan du bruge throw-udtryk som en højrehåndsoperand af ?? operator som gør din kode mere kortfattet.
- Du må bruge ?? operator med værdityper og referencetyper.Eksempel: 
 
 
 
 
 
 
 // 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;>>}>}>}>> primtalsprogram i java > Produktion: Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40> 
- Med hjælp fra ?? operatør, du kan forhindre Invalid OperationException .Eksempel: 
 
 
 // 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);>>}>}>}>> > Produktion: Value of item_1 is: Value of item_2 is: 100> 
- Med hjælp fra ?? operatør kan du fjerne mange overflødige if-else-betingelser og gøre din kode kompakt og læsbar.Eksempel: sort array liste java 
 
 
 // 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> 
 java omvendt streng 
 
 // 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> 
- ?? operator kan indlejres. Det vil gøre din kode mere læsbar og også reducere flere if-else-betingelser.Eksempel: 
 
 
 // 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);>>}>}>}>> Log af Google-konto på Android > Produktion: Value of item_4 is: 500> 
