可空变量类型 - .value成员

时间:2009-07-29 20:04:34

标签: c# types nullable member

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

e.g ..

BOOL? b =真;

为什么我会使用b.Value获取值而不是仅使用b? .Value调用添加了什么优点或功能?

5 个答案:

答案 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”