佐々木屋

技術的なことから趣味まで色々書きます

クラスのプロパティ④(アクセスレベル制御)

getter、setterそれぞれにアクセス修飾子を設定することが可能です。
C#のみ、自動実装プロパティでも従来の記述でもどちらも設定可能です。

//読み取り、書き込みともに公開
public string Hoge { get; set; }

//読み取りのみ公開、書き込みはクラス内部からのみ公開
public string Hoge1 { get; private set; }

//書き込みのみ公開、読み取りはクラス内部と派生クラスのみ公開
public string Hoge2 { protected get; set; }

//通常記述の場合も同様に使える
private string _hoge;
public string Hoge4 {
    private get {
        return _hoge;
    }
    set {
        _hoge = value;
    }
}



VB.NETでは従来の記法のみ設定可能です。

'読み取り、書き込みともに公開
Public Property Hoge() As String
    Get
        Return _hoge
    End Get
    Set(ByVal value As String)
        _hoge = value
    End Set
End Property

'読み取りのみ公開、書き込みはクラス内部からのみ公開
Public Property Hoge1() As String
    Get
        Return _hoge
    End Get
    Private Set(ByVal value As String)
        _hoge = value
    End Set
End Property

'書き込みのみ公開、読み取りはクラス内部と派生クラスのみ公開
Public Property Hoge2() As String
    Protected Get
        Return _hoge
    End Get
    Set(ByVal value As String)
        _hoge = value
    End Set
End Property

sasaki816.hatenablog.com