2017-09-15 52 views
0

我有一個出現InvalidOperationException可空物體使用空當滿足條件

試圖設置使用的一個textform的值時,「可空對象必須有一個值」

必須有一個值_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 

回答

1

您似乎試圖將一個可爲空的十進制分配給字符串屬性。這個錯誤在「某些事情是錯誤的」之外並沒有幫助,但是你需要在那裏進行類型轉換。由於EmployerContributionAmount本身不是可爲空這應該這樣做:

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

(如果_socialSecurityBracket爲null,則空將被分配,否則,小數屬性將被轉換爲字符串)

+0

由於它的工作原理。我的理由不是爲什麼? 'txtSocialSecurity.Text = Nothing'工程,所以我不知道爲什麼'txtSocialSecurity.Text = _socialSecurityBracket?.Amount'不應該當它應該返回Nothing而沒有對象。 – Aaron

+0

@Aaron'_socialSecurityBracket?.Amount'的類型是'decimal?',但是您分配給'string'。 – Richard