読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマー兼SEです。好きなツール:WorkFlowy、好きな言語:C#、好きなAWSのサービス:EMR。

IEnumerable.SequenceEqualメソッド

.NET C# LINQ

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;
    }
}

実行結果