Null許容型はGetTypeでNullableを返さず値型を返す
Null許容型ですが、GetTypeメソッドを呼び出した際にNullableではなく値型を返すという特性があります。Nullable
Nullableを導入した際の値型との互換性のためだと思いますが、ちょっと変わった動作です。そのためだと思いますが、Nullableをdynamic型に代入するとHasValueプロパティが使えなくなります。dynamic型は内部でGetTypeを実行して型情報を取得しているためだと考えられます。
ちなみにNullable
Nullable
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Nullable
System.Diagnostics.Debug.WriteLine(hoge.GetType().ToString());
System.Diagnostics.Debug.WriteLine(typeof(Nullable
dynamic dhoge = hoge;
System.Diagnostics.Debug.WriteLine(dhoge.HasValue.ToString());
}
}
}