将Nullable转换为ValueType

时间:2014-09-26 10:09:24

标签: c# nullable

Nullable.Value(<whatEverType>) Nullable之间有什么区别吗?据我所知,如果未设置值或值本身,则两个方法都返回NULL。

例如:

DateTime? date = DateTime.Now;
DateTime now = (DateTime) date;
DateTime now2 = date.Value;

1 个答案:

答案 0 :(得分:7)

不,没有区别。在未设置值的情况下,您将获得InvalidOperationException。 更重要的是,这里是Nullable<T>内的强制转换运算符的实现:

public static explicit operator T(Nullable<T> value) {
    return value.Value;
}

(用Resharper反编译)

因此,强制转换运算符使用Value成员。