汎用リストをISetに変換する 質問する

汎用リストをISetに変換する 質問する

にリストを割り当てなければならなかった人はいますかISet? これを実行するにはどうすればいいですか?

クラスがあると言う

class Foo
{
  ISet<Item> Items { get; set; }
}

今、私は次のことをやりたいです:

var foo = new Foo() { Items = new List<Item>() { new Item() } }

ベストアンサー1

List<Item> myList = ...
foo.Items = new HashSet<Item>( myList );

Setは とは異なり、すべての要素を 1 回だけ含める必要があることに注意してくださいList。したがって、myListにいくつかの要素のコピーが複数含まれている場合、1 つを除くすべてのコピーはセットに含まれません。

Equals要素の等価性 (複数のコピーを検出するため) は、 メソッドとメソッドによって定義されますGetHashCode。等価性の別の定義を使用する場合は、HashSetを受け取るコンストラクターのオーバーロードを使用できますIEqualityComparer<Item>

おすすめ記事