オブジェクト(インスタンス)を使用してクラスのプライベートメンバー変数にアクセスする
-
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>
所属していません StackOverflow