SortedList でキーとして使用されるバイト配列を比較したい
public SortedList<byte[], string> myList = new SortedList<byte[], string>();
問題は、.NETがリストの2つの要素を比較する方法を知らないため、myListにエントリを追加できないことです(「配列内の2つの要素を比較するエラー」):
byte[] bytearray = {0,0,25,125,250}; // Example
string description = "Example Value";
myList.Add(bytearray, description);
少しグーグルで調べた後、独自の IComparer Class の実装について何かを読みました。さらに検索しましたが、バイト配列の IComparer 実装については何も見つかりませんでした。これを達成する方法はありますか?
クイック編集: 回答ありがとうございます! 提供された回答から IComparer を実装しました。
class ByteComparer : IComparer<byte[]>
{
public int Compare(byte[] x, byte[] y)
{
var len = Math.Min(x.Length, y.Length);
for (var i = 0; i < len; i++)
{
var c = x[i].CompareTo(y[i]);
if (c != 0)
{
return c;
}
}
return x.Length.CompareTo(y.Length);
}
}
そしてそれを呼び出す:
public SortedList<byte[], string> myList = new SortedList<byte[], string>(new ByteComparer());