Visual Basic .NET または Visual Basic 2005 でのプロパティの定義および使用方法

この記事は、以前は次の ID で公開されていました: JP308230
Microsoft Visual C# .NET については、次の資料を参照してください。319265
概要
多くのオブジェクト指向プログラミング言語では、クラスに内部的な詳細をカプセル化できるようにすることが重要な目的の 1 つです。Visual Basic .NET または Visual Basic 2005 では、プロパティを定義することによって、クラスの内部的な詳細への制御されたアクセスを提供することができます。この資料では、Visual Basic .NET アプリケーションまたは Visual Basic 2005 アプリケーションにおいてプロパティを定義し、使用する方法について説明します。

プロパティは、読み取り専用、書き込み専用、または読み書き可能に設定できます。Get アクセサは読み取りアクセスを提供し、Set アクセサは書き込みアクセスを提供します。これらのアクセサにコードを追加して、プロパティを取得または設定するための適切な機能を提供することができます。

この資料では、Employee という名前のクラスを作成します。このクラスの中に、従業員の名前を表す読み書き可能なプロパティ、従業員の給料を読み取るためのプロパティ、および従業員の勤続日数を計算するプロパティを定義します。その後、アプリケーションの中に Employee オブジェクトを作成し、そのプロパティを使用します。

先頭に戻る

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。
  • Microsoft Visual Studio .NET または Microsoft Visual Studio 2005
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。
  • Visual Basic .NET または Visual Basic 2005 の構文
  • オブジェクト指向の概念
先頭に戻る

Visual Basic .NET または Visual Basic 2005 のクラスを含むアプリケーションを作成する

  1. Visual Studio .NET または Visual Studio 2005 を起動し、EmployeeProperties という名前の新しい Visual Basic .NET または Visual Basic 2005 のコンソール アプリケーション プロジェクトを作成します。
  2. [プロジェクト] メニューの [クラスの追加] をクリックします。[新しい項目の追加] ダイアログ ボックスで、[ファイル名] ボックスに Employee.vb と入力し、[開く] をクリックします。

    : Visual Studio 2005 では、[開く] の代わりに [追加] をクリックします。
  3. コード ビュー ウィンドウで、新しいクラスのコードを確認します。
先頭に戻る

フィールド、コンストラクタ、メソッドを定義する

  1. Employee クラスに 3 つの Private フィールドを追加します。
    Private Name As StringPrivate Salary As DecimalPrivate HireDate As DateTime					
  2. クラスのコンストラクタを次のように定義して、Employee クラスのフィールドが初期化されるようにします。
    Public Sub New(ByVal Name As String, _               ByVal Salary As Decimal, _               ByVal HireDate As DateTime)   Me.Name = Name   Me.Salary = Salary   Me.HireDate = HireDateEnd Sub					
  3. クラスに以下のような Public メソッドを追加します。
    Public Sub PayRise(ByVal Amount As Decimal)   Me.Salary += AmountEnd Sub					
先頭に戻る

クラス内のプロパティを定義する

  1. 以下のコードを追加して、FullName という名前の読み書き可能プロパティを追加します。Get アクセサは、従業員の名前を返します。Set アクセサは、Set アクセサに渡された Value パラメータを使用して従業員の名前を設定します。
    Public Property FullName() As String   Get      Return Me.Name   End Get   Set(ByVal Value As String)      Me.Name = Value   End SetEnd Property					
  2. 以下のコードを追加して、Remuneration という名前の読み取り専用プロパティを追加します。Get アクセサは従業員の給料を返します。給料を直接設定することはできないため、Set アクセサはありません。給料を変更するためには、PayRise メソッドを呼び出す必要があります。
    Public ReadOnly Property Remuneration() As Decimal   Get      Return Me.Salary   End GetEnd Property					
  3. 以下のコードを追加して、DaysSinceJoined という名前の読み取り専用プロパティを追加します。Get アクセサは、従業員の勤続日数を計算します。
    Public ReadOnly Property DaysSinceJoined() As Integer   Get      Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)      return timespan.Days   End GetEnd Property					
先頭に戻る

オブジェクトを作成してプロパティを使用する

  1. [コード ビュー] ウィンドウで Module1.vb のコードを表示します。
  2. Main メソッドで、New 演算子を使用して Employee オブジェクトを作成します。以下のように、ローカルの Employee 変数へのオブジェクト参照を割り当てます。
    Dim worker As New Employee( "Jayne Doe", _                             125000, _                             New DateTime(1998, 7, 31) )					
  3. 以下のコードを追加して、従業員の FullName プロパティを変更します。これにより、FullName プロパティの Set アクセサが暗黙的に呼び出されます。
    worker.FullName = "Jayne Lafayette"					
  4. FullName、Remuneration、DaysSinceJoined の各プロパティの Get アクセサを使用して従業員の詳細情報を表示する、以下のコードを追加します。
    Console.WriteLine("Full name: " & worker.FullName)Console.WriteLine("Remuneration: " & worker.Remuneration)Console.WriteLine("Days since joined: " & worker.DaysSinceJoined)					
先頭に戻る

アプリケーションをテストする

  1. アプリケーションをビルドし、実行します。
  2. アプリケーションによってコンソール上に以下の情報が表示されます ("Days since joined" の値は、現在の日付によって異なります)。
    Full name: Jayne LafayetteRemuneration: 125000Days since joined: 1139						
  3. コード ウィンドウで Module1.vb ファイルに戻り、Main メソッドの末尾に以下のコードを追加します。
    worker.Remuneration = 1000000					
  4. アプリケーションのビルドを実行します。Remuneration は読み取り専用プロパティであるため、コンパイル エラーが表示されます。
  5. ステートメントを次のように変更します。
    worker.Salary = 1000000					
  6. アプリケーションのビルドを実行します。Salary フィールドは Private として指定されているため、再びコンパイル エラーが表示されます。従業員の給与を変更するには、Public メソッドの PayRise を使用する必要があります。
先頭に戻る
プロパティ

文書番号:308230 - 最終更新日: 10/03/2006 20:32:00 - リビジョン: 3.1

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbhowtomaster kbvs2005applies kbvs2005swept KB308230
フィードバック