??演算子 (C# リファレンス)
?? の演算子は null 合体演算子と呼ばれ、許容値型または参照型の既定値を定義するために使用されます。これにより、オペランドが null 以外の場合、左オペランドを返します; それ以外の場合は右オペランドを返します。
解説
null 許容型は、値を指定するか、未定義にしておくことができます。?? 演算子は、null 非許容型に対して null 許容型が割り当てられているときに返す既定値を定義します。?? 演算子を使用せずに、null 非許容値型に対して null 許容値型を割り当てると、コンパイル時にエラーが発生します。null 許容値型が定義されていない場合にキャストを使用すると、InvalidOperationException 例外がスローされます。
詳細については、「null 許容型 (C# プログラミング ガイド)」を参照してください。
両方の引数が定数である場合でも、?? 演算子の結果は定数と見なされません。
使用例
class NullCoalesce
{
static int? GetNullableInt()
{
return null;
}
static string GetStringValue()
{
return null;
}
static void Main()
{
// ?? operator example.
int? x = null;
// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;
// Assign i to return value of method, unless
// return value is null, in which case assign
// default value of int to i.
int i = GetNullableInt() ?? default(int);
string s = GetStringValue();
// ?? also works with reference types.
// Display contents of s, unless s is null,
// in which case display "Unspecified".
Console.WriteLine(s ?? "Unspecified");
}
}