VB.NETのフィールドとプロパティの違いと使い分けを初心者向けに解説
生徒
「先生、VB.NETのクラスでフィールドとプロパティって何が違うんですか?」
先生
「簡単に言うと、フィールドはクラスの中で使うデータを直接保存する場所で、プロパティはそのデータに安全にアクセスするための窓口です。」
生徒
「窓口ってどういう意味ですか?」
先生
「フィールドは直接書き換えられるので安全性が低い場合があります。プロパティを使うと値を取得したり設定したりする時に、条件チェックや加工を加えられるので安全に扱えるという意味です。」
1. フィールドとは
VB.NETのフィールドは、クラスの中で変数を定義してデータを保持する場所です。フィールドはクラスの設計図の一部として存在し、オブジェクトごとに値を持つことができます。直接値を読み書きできるのが特徴です。
Public Class Person
' フィールド
Public name As String
Public age As Integer
End Class
この例では、nameとageがフィールドで、Personクラスのオブジェクトごとに値を保持できます。
2. プロパティとは
プロパティは、フィールドにアクセスするための安全な窓口です。プロパティを使うことで、値の取得(Get)や設定(Set)にルールを加えられます。これにより、データの不正な変更を防ぐことができます。
Public Class Person
Private _name As String
Private _age As Integer
' プロパティ
Public Property Name As String
Get
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
Public Property Age As Integer
Get
Return _age
End Get
Set(value As Integer)
If value >= 0 Then
_age = value
End If
End Set
End Property
End Class
この例では、_nameと_ageがフィールドで、NameやAgeプロパティを通して値を取得・設定します。Ageプロパティでは、0未満の値を設定できないように制御しています。
3. フィールドとプロパティの使い分け
基本的には、クラスの外部から直接アクセスしない場合はフィールドを使い、外部からアクセスする場合はプロパティを使うのがベストプラクティスです。プロパティを使うことで、データの保護や処理の追加が簡単にできます。
- 内部処理用:フィールド
- 外部公開用:プロパティ
4. 実際にオブジェクトで使ってみる
Module Module1
Sub Main()
Dim person1 As New Person()
person1.Name = "太郎"
person1.Age = 28
Console.WriteLine("名前: " & person1.Name)
Console.WriteLine("年齢: " & person1.Age)
' 年齢を負の値に設定しようとしても無視される
person1.Age = -5
Console.WriteLine("年齢: " & person1.Age)
End Sub
End Module
名前: 太郎
年齢: 28
年齢: 28
このようにプロパティを使うことで、無効な値を防ぎ、安全にデータを管理できます。
5. 初心者向けのポイント
- クラス内のデータを安全に扱うためにプロパティを活用する
- フィールドは内部用として使う
- プロパティのGet/Setで条件や加工を追加できる
- オブジェクト指向の基本設計に沿って使い分ける
これらを理解することで、VB.NETのクラス設計がより整理され、保守性の高いプログラムが書けるようになります。