Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

IEnumerable.SequenceEqualメソッド

Enumerable.SequenceEqual(TSource) メソッド (IEnumerable(TSource), IEnumerable(TSource)) (System.Linq)
要素の型に対して既定の等値比較子を使用して要素を比較することで、2 つのシーケンスが等しいかどうかを判断します。

ソースコード

using System;
using System.Linq;

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            Man[] mans1 = new Man[] { 
                new Man { name = "sato", age = 20 },
                new Man { name = "suzuki", age = 21 }
            };

            Man[] mans2 = new Man[] { 
                new Man { name = "sato", age = 20 },
                new Man { name = "suzuki", age = 21 }
            };

            // プロパティ値は同一でも、参照しているオブジェクトが異なるのでfalse。
            Console.WriteLine(mans1.SequenceEqual(mans2));

            mans2[0] = mans1[0];
            mans2[1] = mans1[1];

            // 同一のオブジェクトを参照しているのでtrue。
            Console.WriteLine(mans1.SequenceEqual(mans2));

            // 順序を入れ替える。
            mans2[0] = mans1[1];
            mans2[1] = mans1[0];

            // 順序が異なるのでfalse。
            Console.WriteLine(mans1.SequenceEqual(mans2));

            Console.ReadKey();
        }
    }

    class Man
    {
        public string name;
        public int age;
    }
}

実行結果