14
Object t = 4;
Object s = 4;

if (t == s) {       // false
}

List<Object> q = new List<object>() { t };
Boolean found = q.Contains(s);          // found = true!

上記のコードでは、 ;がt == s返されても驚かないでしょう。false2 つのオブジェクトへの参照を比較していますが、参照は同じではありません。

しかし、Contains が true を返していることに驚いています。明らかに、オブジェクト参照を比較するだけではありません.4と4のボックス化されていない値を比較しているようです..しかし、オブジェクトをボックス化解除してそれらを比較することをどのように、そしてなぜ知っているのでしょうか? ここでは、より大きな原理を理解しようとしています。

4

6 に答える 6