1

データベースに 0 または null として保存できる NrPeso decimal プロパティを持つエンティティがあります。プロパティに値を割り当てるために私がやっていることは次のとおりです。

entity.NrPeso = Convert.ToDecimal(object.value("value"))

問題は、オブジェクトの値を入力しないと、 に設定されることNothingです。キャストすると 0 になります。しかし、0 は必要ありませんNothing。オブジェクトの値を比較すると、Nothing または 0 の場合にNothing返されます。Nothing

私はいくつかの代替案を考えましたが、それらは良くないようです。

それで、これを行う正しい方法は何ですか?

4

4 に答える 4

4

DecimalNothingは構造体です -定義上はできません。

nullable が必要ですDecimal

が(別名)NrPesoとして定義されている場合、期待どおりに動作するはずです。Nullable(Of Decimal)Decimal?

于 2012-10-04T14:00:47.880 に答える
1

と(またはその他の値型)を区別したい場合0Nothing、最初にnull 許容型を使用する必要があります。Decimal

したがって、Decimal?代わりに使用しますDecimal

于 2012-10-04T14:00:55.697 に答える
0

これを試して:

Dim obj As Object = object.value("value")
entity.NrPeso = If (obj Is Nothing, Nothing, Convert.ToDecimal (obj))
于 2012-10-04T14:19:24.290 に答える
0

Convert.ToDecimal を使用する代わりに、Decimal.TryParse を使用することを検討し、失敗した状態で Nullable 型を明示的に Null に設定します。

Dim outVal As Decimal?
If Decimal.TryParse(object.value("value"), outVal)
   entity.NrPeso = outVal
Else
   entity.NrPeso = Nothing
End If

さらに、将来このようなタイプの問題を回避するために、プロジェクトで Option Strict On を設定することを検討してください。

于 2012-10-04T14:20:56.630 に答える