|
■No58674 (バーバラ さん) に返信 > 構造体が空かどうかを簡単に調べるにはどうすればよいでしょうか?
方法の一つしては、Nothing と値比較するという手法があります。 If CType(Nothing, Stru1).Equals(dstFirstStru1) Then '空 Else '発見 End If
ただし「空の構造体」は、値ゼロと区別がつきません。
たとえば、Int32 構造体(Integer 型) の空値は「0」ですし、 DateTime 構造体(Date 型)の空値は「Date.MinValue」(0001/01/01 00:00:00.0000000)で、 Point 構造体の空値は「Point.Empty」(X = 0, Y = 0)です。
「該当項目無し」の状態を、こうした「値ゼロ」と同一視しても構わないのであれば、 Point 構造体や Color 構造体のように、あらかじめ「IsEmpty プロパティ」を 用意しておくと便利かも知れません。 If Stru1.IsEmpty Then '空 Else '発見 End If
逆に、「該当項目なし」と「値ゼロ」を区別したいのであれば、 ・List(Of T).Find ではなく List(Of T).FindIndex を使う。 ・null 許容値型にして、Nothing 判定を行う。 などといった対処が必要でしょう。 (null 許容型の場合は、SingleOrDefault 拡張メソッドでの検索もできます)
|