2009-10-20 4 views
5

アイテムを取り外す際に、このようなテストが必要ですか?C#リスト<T>テストが含まれています

if (_items.Contains(item)) 
{ 
    _items.Remove(item); 
} 

そして、このテストはどうなりますか?

if (!_items.Contains(item)) 
{ 
    _items.Add(item); 
} 
+2

なぜドキュメントを読んだり、試したりしないのですか?見つけ出すのは簡単なことのようだ。 –

+4

私はStackoverflowの質問に何が間違っているのかは分かりませんが、ドキュメントを読むことは常に良いことです。ここでの回答は、彼にとって興味深い追加の洞察を提供することもできます(2番目の答えのHashsetへの言及など)。 –

答えて

11

削除をテストする必要はありません。 Remove()は何も削除しなかった場合にfalseを返します。

リストに重複しないようにする場合は、追加する前にテストすることができます。それ以外の場合は、重複します。

参照:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

+2

重複したくない場合は、テストしないでください。重複を持たないコレクションを使用する必要があります。それ以外の場合は、スレッドセーフではありません。 – Tordek

+0

スレッドの安全性を前提としています。そうであれば、コレクションクラスがスレッドセーフであることを確認する必要もあります(私はMSのIDkかもしれないと思います)。 – snarf

7

また、あなたは(追加できるようにしたい場合はアイテム)を複数回HashSetの<T>を使用し、それは一度だけのコレクションに存在する可能性があり、チェックなし()が含まれています最初。

関連する問題