Porovnávání a řazení v rámci kolekce
Třídy System.Collections provádějí porovnání, zda vyhledávání elementů odebere, nebo navrátí hodnotu páru klíče a hodnoty, a to u téměř všech procesů, které jsou zahrnuty ve správě kolekcí.
Pro porovnání se používají dvě konstrukce. Metoda Equals, buď zděděná nebo odvozená z Object, jednoduše vrací logický datový typ, aby označila, zda-li se dva objekty rovnají. Metoda IComparable.CompareTo a metoda IComparer.Compare vrací celé číslo, které označuje, jak se porovnávají dvě hodnoty ve vzájemné relaci. Equals se používá pro kontroly rovnosti; metody IComparable.CompareTo a IComparer.Compare a jejich protějšky v obecných rozhraních, metody IComparer<T>.Compare a IComparable<T>.CompareTo, se používají pro řazení.
Porovnání může být mezi elementy kolekce, nebo mezi elementem a zadanou hodnotou. Pokud nejsou porovnavatelé explicitně zadáni, pak je alespoň od jednoho z porovnávaných objektů očekáváno, že implementuje rozhraní IComparable a bude schopen se porovnat s jinými objekty.
Některé třídy mají metody, které přijmou jako parametr implementaci IComparer. Pokud se používají tyto metody a parametr IComparer není nulový odkaz (Nothing v jazyce Visual Basic), pak po porovnávaných objektech není vyžadováno, aby implementovaly IComparable. Je však vždy vhodné implementovat IComparable na všechny třídy, které lze použít jako hodnoty v seznamu kolekce nebo jako klíče v kolekci slovníku.
Některé přetěžování konstruktoru pro kolekce slovníku přijímá implementaci IComparer, která slouží k porovnání klíčů pokaždé, když je porovnání požadováno. Array má přetížení ze své metody Sort, která přijímá implementaci IComparer, která se používá pouze pro toto konkrétní volání metody Sort.
Aktuální nastavení jazykové verze systému může ovlivnit porovnání a řazení v rámci kolekce. Ve výchozím nastavení je porovnání a řazení ve třídách Collections citlivé na jazykové verze. Chcete-li ignorovat nastavení jazykové verze a tím získat konzistentní porovnání a řazení výsledků, použijte InvariantCulture se členy přetížení, které přijímají CultureInfo. Další informace naleznete v Provádění řetězcových operací necitlivých na jazykové verze v kolekcích a Provádění řetězcových operací necitlivých na jazykové verze v polích.