2017-09-15 2 views
0

mit Ich habe ein InvalidOperationExceptionNullable Objekt muss einen Wert haben, wenn null bedingte

„Nullable-Objekt muss einen Wert haben“

, wenn Sie den Wert eines Textform zu setzen versuchen, eine mit der nullbedingte Operator, wenn _socialSecurityBracket null/nichts ist. Nichts in MSDN sagt mir, warum es einen Fehler macht.

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

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

Antwort

1

Sie scheinen zu versuchen, einer String-Eigenschaft eine Nullwert-Dezimalzahl zuzuweisen. Der Fehler ist nicht hilfreich über "etwas ist falsch", aber Sie brauchen eine Typumwandlung in dort. Da EmployerContributionAmount selbst nicht auf NULL festlegbare dies tun sollte:

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

(. Wenn _socialSecurityBracket null ist, dann wird Null zugewiesen werden, da sonst das Dezimalsystem Eigenschaft wird in einen String umgewandelt werden)

+0

Dank es funktioniert. Gibt es einen Grund, warum meins nicht? 'txtSocialSecurity.Text = Nothing' funktioniert, also bin ich mir nicht sicher warum 'txtSocialSecurity.Text = _socialSecurityBracket? .Amount' nicht, wenn es nur Nothing zurückgeben soll, wenn das Objekt Nothing ist. – Aaron

+0

@Aaron Typ von '_socialSecurityBracket? .Amount' ist 'decimal?', Aber Ihre Zuordnung zu einer 'string'. – Richard

Verwandte Themen