??演算子を知らないともぐり

こんばんは、C#開発者の米村です。


これを知らないとC#のもぐりと言われるのが、??演算子です(実際そんな事ないです)

??演算子 とは

左側のオペランドがnull値でない場合にはこのオペランドを返し
null値である場合は右側のオペランドを返すというものです。


実際の具体例は

using System;

namespace Test
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            int? i = null;
            int hoge = i ?? 100;
            System.Diagnostics.Debug.WriteLine(hoge.ToString());
        }
    }
}

これは、iがnullだった場合hogeに100を格納するというものです。
null許容型は、値を指定するか未定義に出来ます。

??演算子を使用せずに、null非許容型にnull許容型を割り当てると
コンパイルエラーになってくれます。

実際に宣言時の構文の T? は、System.Nullableの省略表現です。

double? foo = 5.12;
int? bar = 100;

ちなみに入れ子になったnull許容型は許可されていないです。

// これはNG
Nullable<Nullable<int>> nullableTest;

??演算子は以外に便利ですね。