印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
IsTrue、IsFalse演算子の利用方法

最終更新日 2006 年 6 月 8 日

download.gifサンプル コードのダウンロード (vbmigtips_IsTrueOperator.msi, 491 KB)

※ このサンプルをインストールするには Visual Studio 2005 が必要です。

Visual Basic 2005 では、.NET Framework 2.0 がサポートされたことにより、様々な機能が追加されました。そこで今回は、新たに追加された、IsTrue 演算子と IsFalse 演算子について紹介します。

IsTrue 演算子と IsFalse 演算子は、コードから明示的に呼び出すことができないため、クラスや構造体で定義する必要があります。また、IsTrue と IsFalse はセットで使用されるため、一方を定義する場合、もう一方も定義する必要があります。

IsTrue 演算子と IsFalse 演算子は、構造体やクラスでオーバーロードすることにより、オブジェクトのエラーチェックを効率よく行うことができます。そこで今回は、IsTrue 演算子と IsFalse 演算子をオーバーロードした ArrayList クラスと、オーバーロードをしていない ArrayList クラスの比較を行います。図1 の[エラーチェック開始]ボタンをクリックすることで、各変数のエラーチェックを行い、その結果を ListBox に表示するアプリケーションを作成します。

IsTrueOperator_fig01.jpg
図1

まず、ArrayList を継承した myArrayList クラスを作成し、Operator ステートメントを使い、IsTrue 演算子と IsFalse 演算子を定義します。実装コードは以下のとおりです。

Public Class MyArrayList
   Inherits ArrayList

   Public Shared Operator IsTrue(ByVal myarraylist As MyArrayList) As Boolean
      Return myarraylist IsNot Nothing AndAlso myarraylist.Count > 0
   End Operator

   Public Shared Operator IsFalse(ByVal myarraylist As MyArrayList) As Boolean
      Return Not (myarraylist IsNot Nothing AndAlso myarraylist.Count > 0)
   End Operator

End Class

リスト1

上記 (リスト1) の 「Inherits ArrayList」では、ArrayList に IsTrue 演算子と IsFalse 演算子をオーバーロードしたオリジナルのクラスを作成するため、ArrayList クラスを継承します。「Return myarraylist IsNot Nothing AndAlso myarraylist.Count > 0」では、変数 myarraylist が Nothing でなく、且つ、myarraylist に格納されている要素が1つ以上ある場合、「True」を返し、それ以外の場合は、「False」を返します。「Return Not (myarraylist IsNot Nothing AndAlso myarraylist.Count > 0)」では、変数 myarraylist が Nothing でなく、且つ、myarraylist に格納されている要素が1つ以上ある場合、「False」を返し、それ以外は「True」を返します。

次に、図1 の[エラーチェック開始]ボタンをクリックしたときの処理を実装します。まず、オーバーロードをしていない ArrayList クラスによる変数の宣言、および、データ型のエラーチェックを実装します。実装コードは以下のとおりです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Dim a As ArrayList = Nothing
   Dim b As ArrayList = New ArrayList

   b.Add("test1")
   b.Add("test2")

   If a IsNot Nothing Then
      If a.Count > 0 Then
         ListBox1.Items.Clear()
         ListBox1.Items.AddRange(a.ToArray)
      Else
         ListBox1.Items.Clear()
         ListBox1.Items.Add("error")
      End If
   Else
      ListBox1.Items.Clear()
      ListBox1.Items.Add("error")
   End If

   If b IsNot Nothing Then
      If b.Count > 0 Then
         ListBox2.Items.Clear()
         ListBox2.Items.AddRange(b.ToArray)
      Else
         ListBox2.Items.Clear()
         ListBox2.Items.Add("error")
      End If
   Else
      ListBox2.Items.Clear()
      ListBox2.Items.Add("error")
   End If
   Button1.Text = "チェック完了"
End Sub

リスト2

上記 (リスト2) では、ArryaList 型の変数が Nothing ではなく、且つ、ArryaList 型の変数に格納されている要素が1つ以上ある場合、変数に格納されているデータを ListBox に表示します。それ以外の場合は、「error」と表示します。

次に、IsTrue 演算子と IsFalse 演算子をオーバーロードした myArrayList クラスによる変数の宣言、および、データ型のエラーチェックを実装します。実装コードは以下のとおりです (リスト2 に次のコードを追加してください) 。

Dim c As myArrayList = Nothing
Dim d As myArrayList = New MyArrayList

d.Add("test3")
d.Add("test4")

If c Then
   ListBox3.Items.Clear()
   ListBox3.Items.AddRange(c.ToArray)
Else
   ListBox3.Items.Clear()
   ListBox3.Items.Add("error")
End If

If d Then
   ListBox4.Items.Clear()
   ListBox4.Items.AddRange(d.ToArray)
Else
   ListBox4.Items.Clear()
   ListBox4.Items.Add("error")
End If

リスト3

上記 (リスト3) では、MyArrayList クラスに返された値が「True」の場合、変数に格納されているデータを ListBox に表示し、「False」の場合は、「error」と表示します。

以上の実装を行い、[エラーチェック開始]ボタンをクリックすると、図2 のように結果が表示されます。

IsTrueOperator_fig02.jpg
図2

リスト2 とリスト3 を比較してわかるように、IsTrue 演算子とIsFalse 演算子をクラスや構造体でオーバーロードすることで、よりわかりやすくコードの記述ができるようになりました。

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker