クラスのプロパティ③(getter/setter制御)
外部からの制御用として読み取り、書き込みの設定制御が可能です。
C#とVB.NETで少し記法が異なりますので注意しましょう。
読み取り専用
//getterのみを記述すれば読み取り専用となる //自動実装プロパティの場合 public string Hoge1 { get; } //通常記述の場合 private string _hoge; public string Hoge2 { get { return _hoge; } }
'ReadOnlyキーワードを記述すると読み取り専用となる '自動実装プロパティの場合 Public ReadOnly Property Hoge1() As String '通常記述の場合 Private _hoge As String Public ReadOnly Property Hoge2() As String Get Return _hoge End Get End Property
書き込み専用
//setterのみを記述すれば読み取り専用となる //自動実装プロパティの場合はエラーになる public string Hoge1 { set; } //←エラー //通常記述の場合 private string _hoge; public string Hoge2 { set { _hoge = value; } }
'WriteOnlyキーワードを記述すると読み取り専用となる '自動実装プロパティの場合はエラーになる Public WriteOnly Property Hoge1() As String '←エラー '通常記述の場合 Private _hoge As String Public WriteOnly Property Hoge2() As String Set(ByVal value As String) _hoge = value End Set End Property
値の設定(自動実装プロパティのgetterのみの場合)
自動実装プロパティを使用した読み取り専用プロパティに対する値の設定は、コンストラクタからしか設定できません。
class Class1 public string Hoge { get; } //コンストラクタより値を設定 public Class1() { Hoge = "piyo"; } //以下はエラーとなる public void Piyo() { Hoge = "piyo"; } }
Class Class1 Public ReadOnly Property Hoge() As String 'コンストラクタより値を設定 Public Sub New() Hoge = "piyo" End Sub '以下はエラーとなる Public Sub Piyo() Hoge = "piyo" End Sub End Class