可能性の重複:
Why are my privates accessible?
Why are private fields private to the type, not the instance?クラスインスタンスのプライベートメンバーがEquals()メソッド本体で利用できるようになるのはなぜですか?
は、おそらく私は明白な事実をしないのですが、私は本当に理由を見ることができない。
Iに等しいをオーバーライドし
( )メソッドと私のタイプにオブジェクトをキャストすると、 私はできる プライベートメンバーを問題なく使用してください!インスタンスを初期化していますが、プライベートメンバーに到達できないと考えています。
なぜ、キャストされたオブジェクトがEquals()メソッドで私の秘密を私に公開するのですか?
は、以下のサンプルコードでの対等の実装を参照してくださいと「その」に私はプライベートフィールドに達しています方法を見てインスタンス:
public class Animal
{
private string _name;
private int _age;
public Animal(int age, string name)
{
_name = name;
_age = age;
}
public override bool Equals(object obj)
{
var that = (Animal) obj;
//_name and _age are available on "that" instance
// (But WHY ???)
return
this._age == that._age
&& this._name == that._name;
}
}
class Program
{
static void Main(string[] args)
{
var cat1 = new Animal(5, "HelloKitty");
var cat2 = new Animal(5, "HelloKitty");
Console.Write(cat1.Equals(cat2));
Console.Read();
}
}
これらの変数を変更して値を変更しようとしましたか?冷たいことを試してみてください。 – Burimi