我想知道 - 我什么时候想在可空类型上使用.Value成员而不是只调用变量本身?
e.g ..
BOOL? b =真;
为什么我会使用b.Value获取值而不是仅使用b? .Value调用添加了什么优点或功能?
答案 0 :(得分:13)
value属性是只读的,将返回实际值类型。 value属性永远不能为null。
如果您希望可以为null返回值,则检查.HasValue然后引用Value。例如,如果你想将Nullable的值赋给普通的bool,那么你必须引用它的值:
bool? nullableBool = null;
if (nullableBool.HasValue)
{
bool realBool = nullableBool.Value;
}
但是,以下将不会编译:
bool? nullableBool = true;
bool realBool = nullableBool; // Won't work
答案 1 :(得分:3)
.Value返回bool而不是bool?这将允许您将其用作不期望可空类型的函数的参数。
答案 2 :(得分:2)
当您想要使用基础类型的方法/属性时。不适用于布尔。让我用DateTime
来说明:
DateTime? d;
int month = d.Value.Month;
您无法直接从d访问Month属性,因为DateTime?没有这个属性。
答案 3 :(得分:1)
唯一的区别是它们是两种不同的类型。如果你有一个 bool?那么它就是一个可以为空的bool。
如果你拨打 b.Value ,你实际上是在返回 bool 而不是 bool?。
微妙,但是当你需要对象的非可空版本时,请使用.Value属性。
答案 4 :(得分:1)
对我来说,它没有那么多价值,因为我发现有用的属性“HasValue”