tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: Deserialize で未設定値とそれ以外を区別する方法
投稿日: 2015/11/26(Thu) 19:55
投稿者たかし

Nullable を使用して解決できました。
Nullable の存在を知りませんでした。
ありがとうございました。

---------------------------------

Public Class Person
  Public Name As String
  Public Year As Nullable(Of Integer)
End Class

とすることで
よーこの Year は Nothing となり
たろうの Year は 0 となりました。

処理で使用する際は

If .Year IsNot Nothing Then
   MsgBox "Year = " & .Year
End If

という感じです。

Serialize で xml 出力すると
<Year xsi:nil="true" />
となってしまい、違和感がありますが、
xml に出力することはない( xml を読み込むだけ)ので
問題ありません。

ちなみに、最悪、次のような方法を考えていました。

Public Class Person
  Public Name As String
  Public Year As Integer = Integer.MinValue
End Class

If .Year <> Integer.MinValue Then
   MsgBox "Year = " & .Year
End If

ただ、年齢とかであれば、絶対ありえない値というものがある(負の値など)ので
この方法でなんとか可能ですが、
中には、絶対ありえない値、というものがないものもあるので…

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。