tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル クラス内Private変数に外部(?)からアクセスできてしまう
投稿日: 2014/08/22(Fri) 14:38
投稿者まさお
まさお と申します。 宜しくお願い致します。

 WinXP Pro SP3  VB2010 Express SP1 です。


 クラス関数にて自己と同じ型の別インスタンスのPrivate変数に直接アクセスできますか?

 具体的には下記コードにおいて※α s1 は Private なので ※βのように Me からしかアクセスできない、と理解しておりました。
 しかし※γのように自己と同じ型なら別インスタンス内Private変数に直接アクセスできてしまいます。
   ※δ 違う型なら当然ながらコンパイルエラーになります。
 Me と other は別のインスタンスですから、Me という外部から other という別インスタンスのPrivate変数には直接アクセスできない、と思っていました。
 VB6 では※γで「メソッドまたはデータメンバが見つかりません」コンパイルエラーになるのですが、本来『クラス』とは別インスタンスでも同じ型であればPrivate変数に直接アクセスできるものなのでしょうか?

 自分が何かを誤解しているような気がしています。
 ご教授戴きたくお願い致します。

Public Class Hoge
    Public s0 As String
    Private s1 As String '※α

    Public Sub Foo_0()
        s0 = "xyz"
        s1 = "qwe" '※β
    End Sub
    Public Sub Foo_1()
        Dim other As New Hoge
        other.s0 = "123"
        other.s1 = "456" '※γ
    End Sub
    Public Sub Foo_2(ByVal other As Hoge)
        other.s0 = "abc"
        other.s1 = "def" '※γ
    End Sub
    Public Sub Foo_3()
        Dim other As New OtherType
        other.s0 = "123"
        'other.s1 = "456" '※δ
    End Sub
End Class
Public Class OtherType
    Public s0 As String
    Private s1 As String
End Class


以上、宜しくお願い致します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。