可空变量类型 - .value 成员
我想知道 - 我什么时候想在可为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
value 属性是只读的,并将返回实际值类型。 value 属性永远不能为 null。
如果您希望返回一个可为 null 的值,请检查 .HasValue,然后引用 Value。 例如,如果您想将 Nullable 的值分配给普通 bool,则必须引用它的值:
但是,以下不会编译:
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:
However, the following won't compile:
.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.
当您想使用基础类型的方法/属性时。 并不真正适用于 bool。 让我用
DateTime
来说明:您无法直接从 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
:You cannot access Month property directly from d, because DateTime? doesn't have this property.
对我来说,它的价值并不在于我发现有用的属性“HasValue”
For me it's not so much value as the is the property "HasValue" that I find useful
唯一的区别是它们是两种不同的类型。 如果你有一个 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.