可空变量类型 - .value 成员

发布于 2024-07-30 01:53:43 字数 160 浏览 4 评论 0原文

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

例如。

布尔? b = 真;

为什么我要使用 b.Value 来获取值而不是仅仅使用 b ? .Value 调用增加了什么优势或功能?

I was wondering - when would I want to use the .Value member on a nullable type instead of just calling the variable itself?

e.g..

bool? b = true;

why would i use b.Value to get the value instead of just using b? What advantage or function does the .Value call add?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

诺曦 2024-08-06 01:53:43

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

The value property is read only and will return the actual value type. The value property can never be null.

If you expect to have a nullable return a value then check .HasValue and then reference Value. For instance, if you want to assign the value of a Nullable to an ordinary bool then you have to reference it's value:

bool? nullableBool = null;

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

However, the following won't compile:

bool? nullableBool = true;
bool realBool = nullableBool; // Won't work
半夏半凉 2024-08-06 01:53:43

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

.Value returns a bool rather than a bool? which will allow you to use it as a parameter to functions that don't expect nullable types.

蓝天白云 2024-08-06 01:53:43

当您想使用基础类型的方法/属性时。 并不真正适用于 bool。 让我用 DateTime 来说明:

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

您无法直接从 d 访问 Month 属性,因为 DateTime? 没有这个属性。

When you want to use methods / properties of the underlying type. Doesn't really apply to bool. Let me illustrate with DateTime:

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

You cannot access Month property directly from d, because DateTime? doesn't have this property.

稚然 2024-08-06 01:53:43

对我来说,它的价值并不在于我发现有用的属性“HasValue”

For me it's not so much value as the is the property "HasValue" that I find useful

我不吻晚风 2024-08-06 01:53:43

唯一的区别是它们是两种不同的类型。 如果你有一个 bool? 那么它就是一个可为 null 的 bool 类型。

如果您调用b.Value,您实际上返回的是bool,而不是bool?

很微妙,但是当您需要对象的不可空版本时,请使用 .Value 属性。

The only difference is that they are 2 different types. If you have a bool? then it's a nullable type of bool.

If you call b.Value you're actually returning a bool and not a bool?.

Subtle, but when you need the non-nullable version of the object, use the .Value property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文