Nullable Type補足

昨日のテストで1つ実験し忘れていました。Nullable Typeにnullが設定されている場合、Valueプロパティにアクセスするとどうなるのでしょうか?

using System;

class Program
{
    static void Main(string[] args)
    {
        int? a = null;

        try
        {
            Console.WriteLine("{0}", a.Value);
        }
        catch (InvalidOperationException e)
        {
            Console.WriteLine(e.Message);
        }

        if (!a.HasValue)
        {
            Console.WriteLine("値がありません。");
        }
    }
}

/* 結果
Nullable object must have a value.
値がありません。*/

このように例外が発生します。なので、アクセスする前には値があるかHasValueプロパティで確認してからアクセスすることになります。昨日はnullと比較していましたが、こっちの方が良いですよね。