これはおそらく非常に単純な質問になります。コレクションから重複するbyte[]を削除しようとしています。
デフォルトの動作は参照を比較することなので、IEqualityComparerの作成は機能すると思いましたが、機能しません。
HashSetとLINQのDistinct()を使用してみました。
サンプルコード:
using System;
using System.Collections.Generic;
using System.Linq;
namespace cstest
{
class Program
{
static void Main(string[] args)
{
var l = new List<byte[]>();
l.Add(new byte[] { 5, 6, 7 });
l.Add(new byte[] { 5, 6, 7 });
Console.WriteLine(l.Distinct(new ByteArrayEqualityComparer()).Count());
Console.ReadKey();
}
}
class ByteArrayEqualityComparer : IEqualityComparer<byte[]>
{
public bool Equals(byte[] x, byte[] y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(byte[] obj)
{
return obj.GetHashCode();
}
}
}
出力:
2