Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek poskytuje přehled obecných rozhraní .NET, která zajišťují společné funkce napříč rodinami obecných typů.
Obecná rozhraní poskytují typově bezpečné protějšky pro negenerická rozhraní pro řazení a porovnávání rovnosti a pro funkce, které jsou sdíleny obecnými typy kolekcí. .NET 7 zavádí obecná rozhraní pro typy podobné číslům, System.Numerics.INumber<TSelf>například . Tato rozhraní umožňují definovat obecné metody, které poskytují matematické funkce, kde je parametr obecného typu omezen na typ, který implementuje obecné číselné rozhraní.
Poznámka:
Parametry typu několika obecných rozhraní jsou označeny kovariantní nebo kontravariantní, což poskytuje větší flexibilitu při přiřazování a používání typů, které implementují tato rozhraní. Další informace naleznete v tématu Kovariance a Kontravariance.
Porovnání rovnosti a řazení
V jmenném prostoru System definují obecná rozhraní System.IComparable<T> a System.IEquatable<T> stejně jako jejich negenerické protějšky metody pro řazení při porovnávání a porovnávání rovnosti. Typy implementují tato rozhraní, aby bylo možné takové porovnání provádět.
V oboru názvů System.Collections.Generic nabízejí obecná rozhraní IComparer<T> a IEqualityComparer<T> způsob, jak definovat řazení nebo porovnání rovnosti pro typy, které neimplementují rozhraní System.IComparable<T> ani System.IEquatable<T>. Poskytují také způsob, jak tyto relace předefinovat pro typy, kterých se to týká.
Tato rozhraní se používají metodami a konstruktory mnoha obecných tříd kolekce. Můžete například předat obecný IComparer<T> objekt do konstruktoru třídy SortedDictionary<TKey,TValue> pro určení pořadí řazení pro typ, který neimplementuje obecné System.IComparable<T>. Existují přetížení Array.Sort obecné statické metody a List<T>.Sort metody instance pro řazení polí a seznamů pomocí obecných IComparer<T> implementací.
Comparer<T> a EqualityComparer<T> generické třídy poskytují základní třídy pro implementace generických rozhraní IComparer<T> a IEqualityComparer<T> a také poskytují výchozí řazení a porovnání rovnosti prostřednictvím svých příslušných vlastností Comparer<T>.Default a EqualityComparer<T>.Default.
Funkcionalita kolekce
Obecné ICollection<T> rozhraní je základní rozhraní pro obecné typy kolekcí. Poskytuje základní funkce pro přidávání, odebírání, kopírování a výčet prvků. ICollection<T> dědí z obecného IEnumerable<T> i negenerického IEnumerable.
Obecné IList<T> rozhraní rozšiřuje ICollection<T> obecné rozhraní o metody indexovaného načtení.
Obecné IDictionary<TKey,TValue> rozhraní rozšiřuje ICollection<T> obecné rozhraní o metody pro vyhledávání podle klíče. Obecné typy slovníků v knihovně základních tříd .NET také implementují negenerické IDictionary rozhraní.
Obecné IEnumerable<T> rozhraní poskytuje obecnou strukturu enumerátoru. Obecné rozhraní IEnumerator<T>, které je implementováno obecnými enumerátory, dědí negenerické rozhraní IEnumerator; členy MoveNext a Reset, které nezávisí na parametru typu
T, se objevují pouze na negenerickém rozhraní. To znamená, že jakýkoli příjemce negenerického rozhraní může také využívat obecné rozhraní.
Matematické funkce
.NET 7 zavádí obecná rozhraní v System.Numerics oboru názvů, které popisují typy podobné číslům a funkce, které jsou pro ně k dispozici. 20 číselných typů, které knihovna základních tříd .NET poskytuje, například Int32 a Double, bylo aktualizováno tak, aby implementovaly tato rozhraní. Nejvýraznější z těchto rozhraní je INumber<TSelf>, což zhruba odpovídá "skutečnému" číslu.
Další informace o těchto rozhraních najdete v tématu Obecná matematika.