オブジェクト(インスタンス)を使用してクラスのプライベートメンバー変数にアクセスする

StackOverflow https://stackoverflow.com/questions/346127

  •  19-08-2019
  •  | 
  •  

質問

これはVB.NETコードスニペットです

Public Class OOPDemo

    Private _strtString as String

    Public Function Func(obj as OOPDemo) as boolean
      obj._strString = "I can set value to private member using a object"

    End Function

End Class

オブジェクトを使用してプライベートメンバーにアクセスできないと思いましたが、おそらくCLRを使用してアクセスできます。つまり、アクセス修飾子はその型のインスタンスではなく型に基づいています。また、c ++でもそれが可能になると聞きました。

この理由は何だと思いますか?

編集:

RoBorgから提供されたmsdnリンクのこの行は、この動作を説明していると思います <!> quot;含まれている型内のコードを含むプライベート要素を宣言する型のコードは、要素<!> quot;

にアクセスできます
役に立ちましたか?

解決

あなたの質問はかなり紛らわしいですが、私はそれを次のように理解したと思います: <!> quot;クラスの別のインスタンスのプライベート変数にアクセスできるのはなぜですか?<!> quot;

そのとおりです-私が使用したすべてのOOP言語では、アクセス許可がコードが属するオブジェクトインスタンスではなく、そのオブジェクトインスタンスに基づいているため、他のインスタンスからプライベート変数にアクセスできます。

それ以外の場合、コピーコンストラクタまたは等値演算子を実装するのは難しいかもしれません。

他のヒント

MSDNのアクセスレベルに関するセクションです。 p>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top