2017-02-03 5 views
4

はなぜ次クラスの定義は、プライベートデータメンバーother._name別のオブジェクトと同じクラスのother._idにアクセスすることができますすることができますか?次のクラスの定義は、同じクラスの別のオブジェクトのプライベートデータメンバーにアクセスできるのはなぜですか?

ありがとうございました。あなたがprivateのドキュメントを見れば

public class MyData : IEquatable<MyData> 
{ 

    private long _id; 
    private string _name; 

    public bool Equals(MyData other) 
    { 
     bool ret = 
      string.Equals(_name, other._name) && 
      long.Equals(_id, other._id); 

     return ret; 
    } 

} 
+5

アクセシビリティ修飾子はオブジェクトではなく型に適用されるためです。 – Rob

+0

ありがとうございます。私はまだ理解していない。あなたは例を挙げることができますか? – Tim

+1

さて、あなたの質問は*本当に例です。 'private'は' MyData' *の外部からアクセスできない*メンバーに注釈を付けます。 'Equals'はまだ' MyData'の中にあるので、常にMyData._nameとMyData._idにアクセスできます。現在のインスタンスは関係ありません – Rob

答えて

3

あなたはこれを参照してください。

privateキーワードは、メンバーのアクセス修飾子です。プライベートアクセスは、最低限のアクセスレベルです。プライベートメンバーは、この例のように、クラス本体または宣言されている構造体内でのみアクセスできます。

LIKE上記の例では、そのクラス内のプライベートメンバーにアクセスしています。それは別のインスタンスの問題ではありません、あなたはまだクラスの体にあり、したがってすべてにアクセスすることができます。

関連する問題