为什么可以为 null 的 KeyValuePair<,> 没有关键财产?
我有以下内容:
KeyValuePair<string, string>? myKVP;
// code that may conditionally do something with it
string keyString = myKVP.Key;
// throws 'System.Nullable<System.Collections.Generic.KeyValuePair<string,string>>'
// does not contain a definition for 'Key'
我确信这是有原因的,因为我可以看到该类型可以为空。 是因为我试图在 null
可能会导致不好的事情发生时访问密钥吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请尝试以下操作:
这是
System.Nullable
的精简版本:由于
Value
属性的类型为T
,因此您必须使用Value
属性来获取您正在使用的包装类型实例。编辑:我建议您在使用
Value
之前检查可为空类型的HasValue
属性。Try this instead:
Here is a stripped down version of
System.Nullable<T>
:Since the
Value
property is of typeT
you must use theValue
property to get at the wrapped type instance that you are working with.Edit: I would suggest that you check the
HasValue
property of your nullable type prior to using theValue
.这是因为可为空类型可以分配空值或实际值,因此您必须对所有可为空类型调用“.value”。 “.value”将返回基础值或抛出 System::InvalidOperationException。
您还可以对可为 null 的类型调用“.HasValue”,以确保为实际类型分配了值。
This is because nullable types can be assigned null value or the actual value, hence you have to call ".value" on all nullable types. ".value" will return the underlying value or throw a System::InvalidOperationException.
You can also call ".HasValue" on nullable type to make sure that there is value assigned to the actual type.