In C#, ?? Operator ist als Nullkoaleszenzoperator bekannt. Es gibt den Wert seines linken Operanden zurück, wenn dieser nicht null ist. Wenn es null ist, wertet es den rechten Operanden aus und gibt sein Ergebnis zurück. Oder wenn der linke Operand einen Wert ungleich Null ergibt, dann wertet er seinen rechten Operanden nicht aus.
Syntax:
p ?? q>
Hier ist p der linke und q der rechte Operand von ?? Operator. Der Wert von p kann vom Typ sein, der NULL-Werte zulässt, der Wert von q darf jedoch vom Typ sein, der keine NULL-Werte zulässt. Wenn der Wert von p null ist, wird der Wert von q zurückgegeben. Andernfalls wird der Wert von p zurückgegeben.
Wichtige Punkte:
- Der ?? Der Operator wird zum Überprüfen von Nullwerten verwendet. Sie können einer Variablen, deren Wert null (oder nullbarer Typ) ist, auch einen Standardwert zuweisen.
- Du darfst nicht überlasten?? Operator.
- Es ist rechtsassoziativ.
- In ?? Operator können Sie den Throw-Ausdruck als rechten Operanden von ?? verwenden. Operator, der Ihren Code prägnanter macht.
- Dürfen Sie verwenden?? Operator mit Werttypen und Referenztypen.Beispiel: 
 
 
 
 
 
 
 // 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;>>}>}>}>> > Ausgabe: Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40> 
- Mit der Hilfe von ?? Betreiber, den Sie verhindern können InvalidOperationException .Beispiel: 
 
 
 // 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);>>}>}>}>> > Ausgabe: Value of item_1 is: Value of item_2 is: 100> 
- Mit der Hilfe von ?? Mit dem Operator können Sie viele redundante if-else-Bedingungen entfernen und Ihren Code kompakt und lesbar machen.Beispiel: 
 
 
 // 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);>>}>}>}>> > Ausgabe: 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);>>}>}>}>> > Ausgabe: Value of item_1 is: Value of item_2 is: 200> 
- ?? Der Operator kann verschachtelt werden. Dadurch wird Ihr Code besser lesbar und die Anzahl der if-else-Bedingungen wird reduziert.Beispiel: 
 
 
 // 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);>>}>}>}>> nfa zu dfa > Ausgabe: Value of item_4 is: 500> 
