C#에서는 ?? 운영자 Null 병합 연산자로 알려져 있습니다. null이 아닌 경우 왼쪽 피연산자의 값을 반환합니다. null이면 오른쪽 피연산자를 평가하고 그 결과를 반환합니다. 또는 왼쪽 피연산자가 null이 아닌 것으로 평가되면 오른쪽 피연산자를 평가하지 않습니다.
통사론:
p ?? q>
여기서 p는 ??의 왼쪽, q는 오른쪽 피연산자이다. 운영자. p의 값은 null을 허용하는 유형일 수 있지만 q의 값은 null을 허용하지 않는 유형이어야 합니다. p 값이 null이면 q 값을 반환합니다. 그렇지 않으면 p 값을 반환합니다.
중요한 사항:
- ?? 연산자는 null 값을 확인하는 데 사용되며 값이 null(또는 nullable 유형)인 변수에 기본값을 할당할 수도 있습니다.
- 과부하가 허용되지 않습니까 ?? 운영자.
- 오른쪽 연관입니다.
- 안에 ?? 연산자의 경우 throw 표현식을 ??의 오른쪽 피연산자로 사용할 수 있습니다. 코드를 더욱 간결하게 만드는 연산자입니다.
- 당신은 ??를 사용할 수 있습니다 값 유형과 참조 유형이 있는 연산자.예: 
 
 
 
 
 
 
 // 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;>>}>}>}>> > 산출: Value of item_4 is: techcodeview.com Value of item_3 is: techcodeview.com Value of item_6 is: 40> 
- 의 도움으로 ?? 운영자는 예방할 수 있습니다 InvalidOperationException .예: 
 자바의 목록 노드 
 
 // 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);>>}>}>}>> > 산출: Value of item_1 is: Value of item_2 is: 100> 
- 의 도움으로 ?? 연산자를 사용하면 중복된 if-else 조건을 많이 제거하고 코드를 간결하고 읽기 쉽게 만들 수 있습니다.예: 
 
 
 // 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);>>}>}>}>목록 정렬 자바 > > 산출: 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);>>}>}>}>> > 산출: Value of item_1 is: Value of item_2 is: 200> 
- ?? 연산자는 중첩될 수 있습니다. 이렇게 하면 코드를 더 읽기 쉽게 만들고 여러 if-else 조건도 줄일 수 있습니다.예: 
 
 
 // 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);>>}>}>}>> > 산출: Value of item_4 is: 500> 
