2009-07-29 27 views
7

我想知道 - 什么时候我想在可空类型上使用.Value成员,而不是仅仅调用变量本身?可为空的变量类型 - .value成员

例如:

bool? b =真;

我为什么要使用b.Value获得的价值,而不是仅仅使用B的? .Value调用添加什么优势或功能?

回答

13

value属性是只读的,将返回实际值类型。 value属性不能为null。

如果你希望有一个可为空,然后返回一个值检查.HasValue然后参考价值。举例来说,如果你想要一个可空的值赋给一个普通的布尔那么你必须引用它的价值:

bool? nullableBool = null; 

if (nullableBool.HasValue) 
{ 
    bool realBool = nullableBool.Value; 
} 

但是,下列不会编译:

bool? nullableBool = true; 
bool realBool = nullableBool; // Won't work 
+0

太棒了!这就说得通了。非常感谢 :)) – Valerie 2009-07-29 20:23:08

3

.Value返回一个bool而不是bool?这将允许您将它用作不期望可为空类型的函数的参数。

1

唯一的区别是它们是2种不同的类型。如果您有bool?然后它是一个可空类型的布尔。

如果你打电话b.Value你实际上返回一个布尔,而不是一个布尔?

微妙的,但是当你需要的对象的非空的版本,使用.Value属性。

+0

错字。萨特尔=微妙。 – 2009-07-29 20:18:32

1

对于我来说,没有那么多价值的是财产“的HasValue”当你想使用方法/基础类型的属性,我觉得很有用

2

。不适用于布尔。让我说明与DateTime

DateTime? d; 
int month = d.Value.Month; 

你不能直接从d访问一个月属性,因为日期时间?没有这个属性。