예제 #1
0
        public void Equals()
        {
            // 各要素の比較はできません。
            var v1 = new Vector0(3, 4);
            var v2 = new Vector0(3, 4);
            var v3 = new Vector0(4, 3);
            var ec = EqualityComparer <Vector0> .Default;

            Assert.IsTrue(ReferenceEquals(v1, v1));
            // ReferenceEquals と同じです。
            Assert.IsTrue(v1 == v1);
            Assert.IsTrue(Equals(v1, v1));
            Assert.IsTrue(v1.Equals(v1));
            Assert.IsTrue(ec.Equals(v1, v1));

            Assert.IsFalse(ReferenceEquals(v1, v2));
            Assert.IsFalse(v1 == v2);
            Assert.IsFalse(Equals(v1, v2));
            Assert.IsFalse(v1.Equals(v2));
            Assert.IsFalse(ec.Equals(v1, v2));

            Assert.IsFalse(ReferenceEquals(v1, v3));
            Assert.IsFalse(v1 == v3);
            Assert.IsFalse(Equals(v1, v3));
            Assert.IsFalse(v1.Equals(v3));
            Assert.IsFalse(ec.Equals(v1, v3));
        }
예제 #2
0
        public void Equals()
        {
            // == 演算子は定義されていませんが、Equals で各要素を比較できます。
            var v1 = new Vector0(3, 4);
            var v2 = new Vector0(3, 4);
            var v3 = new Vector0(4, 3);
            var ec = EqualityComparer <Vector0> .Default;

            // 値型では、参照としての比較結果はつねに false です。
            Assert.IsFalse(ReferenceEquals(v1, v1));
            // ReferenceEquals と同じです。
            Assert.IsFalse((object)v1 == (object)v1);
            Assert.IsTrue(Equals(v1, v1));
            Assert.IsTrue(v1.Equals(v1));
            Assert.IsTrue(ec.Equals(v1, v1));
            // コンパイル エラー。
            //Assert.IsTrue(v1 == v1);

            Assert.IsFalse(ReferenceEquals(v1, v2));
            Assert.IsFalse((object)v1 == (object)v2);
            Assert.IsTrue(Equals(v1, v2));
            Assert.IsTrue(v1.Equals(v2));
            Assert.IsTrue(ec.Equals(v1, v2));

            Assert.IsFalse(ReferenceEquals(v1, v3));
            Assert.IsFalse((object)v1 == (object)v3);
            Assert.IsFalse(Equals(v1, v3));
            Assert.IsFalse(v1.Equals(v3));
            Assert.IsFalse(ec.Equals(v1, v3));
        }