Vb.net 使用null条件时,可为null的对象必须具有值

Vb.net 使用null条件时,可为null的对象必须具有值,vb.net,winforms,Vb.net,Winforms,我有个残疾手术例外 “可为null的对象必须有一个值” 当尝试使用null条件运算符设置文本表单的值时,\u socialSecurityBracket为null/nothing。MSDN中没有任何内容告诉我它出错的原因 Class SocialSecurityBracket <Key> Public Property RowID As Integer? Public Property EmployerContributionAmount As Decimal

我有个残疾手术例外

“可为null的对象必须有一个值”

当尝试使用null条件运算符设置文本表单的值时,
\u socialSecurityBracket
为null/nothing。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
Class社会安全欺诈
公共属性RowID是否为整数?
公共财产员工贡献金额(十进制)
末级
公共子显示器()
txtSocialSecurity.Text=\u socialSecurityBracket?.EmployeerContributionAmount
端接头

您似乎试图将可为空的十进制数分配给字符串属性。这个错误除了“有点不对劲”之外没有任何帮助,但是您需要在其中进行类型转换。由于
EmployeerContributionAmount
本身不可为空,因此应执行以下操作:

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

(如果
\u socialSecurityBracket
为null,则将分配null,否则十进制属性将转换为字符串。)

谢谢,它可以工作。为什么我的没有呢
txtSocialSecurity.Text=Nothing
起作用,所以我不确定为什么
txtSocialSecurity.Text=\u socialSecurityBracket?.Amount
不起作用,如果对象为Nothing,它应该只返回Nothing。@Aaron类型的
\u socialSecurityBracket?.Amount
十进制?
,但您分配给的是
字符串