En C#, ?? operador es coneix com a operador de coalescencia nul·la. Tornarà el valor del seu operand de l'esquerra si no és nul. Si és nul, avaluarà l'operand de la dreta i retornarà el seu resultat. O si l'operand de l'esquerra s'avalua com a no nul, aleshores no avalua el seu operand de la dreta.
Sintaxi:
p ?? q>
Aquí, p és l'esquerra i q és l'operand dret de ?? operador. El valor de p pot ser de tipus anul·lable, però el valor de q ha de ser de tipus no anul·lable. Si el valor de p és nul, retorna el valor de q. En cas contrari, retornarà el valor de p.
10 de 100.00
Punts importants:
- El ?? L'operador s'utilitza per comprovar valors nuls i també podeu assignar un valor predeterminat a una variable el valor de la qual és nul (o tipus nul·la).
- No tens permís per sobrecarregar?? operador.
- És dret-associatiu.
- En ?? operador, podeu utilitzar l'expressió throw com a operand de la dreta de ?? operador que fa que el vostre codi sigui més concís.
- Teniu permís per utilitzar?? operador amb tipus de valor i tipus de referència.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;>>}>}>}>> > Sortida: Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40> 
- Amb l'ajuda de?? operador que podeu prevenir 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);>>}>}>}>> > Sortida: Value of item_1 is: Value of item_2 is: 100> 
- Amb l'ajuda de?? operador, podeu eliminar moltes condicions redundants si no i fer que el vostre codi sigui compacte i llegible.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);>>}>}>}>> cua i cua de prioritat a java > Sortida: 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);>>}>}>}>> > Sortida: Value of item_1 is: Value of item_2 is: 200> 
- ?? l'operador es pot niar. Farà que el vostre codi sigui més llegible i també reduirà diverses condicions si no.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);>>}>}>}>> arbre de cerca binari] > Sortida: Value of item_4 is: 500> 
