【问题标题】:Nullable object must have a value when using null conditional使用空条件时,可空对象必须有值
【发布时间】:2017-09-15 09:34:29
【问题描述】:

我遇到了 InvalidOperationException

"可空对象必须有值"

_socialSecurityBracket 为空/无时,尝试使用空条件运算符设置文本表单的值。 MSDN 中没有任何内容告诉我为什么会出错。

Class SocialSecurityBracket
    <Key>
    Public Property RowID As Integer?
    Public Property EmployerContributionAmount As Decimal
End Class

Public Sub Display()
    txtSocialSecurity.Text = _socialSecurityBracket?.EmployerContributionAmount
End Sub

【问题讨论】:

    标签: vb.net winforms


    【解决方案1】:

    您似乎试图将一个可为空的小数分配给字符串属性。除了“出了点问题”之外,该错误无济于事,但您需要在其中进行类型转换。由于EmployerContributionAmount 本身不能为空,因此应该这样做:

    txtSocialSecurity.Text = _socialSecurityBracket?.EmployerContributionAmount.ToString()
    

    (如果_socialSecurityBracket为null,则赋值为null,否则decimal属性将转换为字符串。)

    【讨论】:

    • 谢谢它的工作。我的没有原因吗? txtSocialSecurity.Text = Nothing 有效,所以我不确定为什么 txtSocialSecurity.Text = _socialSecurityBracket?.Amount 在对象为 Nothing 时应该返回 Nothing。
    • @Aaron _socialSecurityBracket?.Amount 的类型是 decimal?,但您分配给 string
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多