Obecná rozhraní v .NET
Tento článek obsahuje přehled . Obecná rozhraní NET, která poskytují 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í
System V oboru názvů definují obecná rozhraní, System.IComparable<T>System.IEquatable<T> jako jsou jejich negenerické protějšky, metody řazení porovnání a porovnávání rovnosti. Typy implementují tato rozhraní, aby bylo možné takové porovnání provádět.
System.Collections.Generic V oboru názvů IComparer<T> nabízejí obecná IEqualityComparer<T> rozhraní způsob, jak definovat řazení nebo porovnání rovnosti pro typy, které neimplementují System.IComparable<T> ani System.IEquatable<T> rozhraní. Poskytují také způsob, jak tyto relace předefinovat pro typy, které dělají.
Tato rozhraní se používají metodami a konstruktory mnoha obecných tříd kolekce. Můžete například předat obecný IComparer<T> objekt konstruktor třídy SortedDictionary<TKey,TValue> určit 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í.
EqualityComparer<T> Obecné Comparer<T> třídy poskytují základní třídy pro implementace IComparer<T> a IEqualityComparer<T> obecné rozhraní a také poskytují výchozí řazení a porovnání rovnosti prostřednictvím příslušných Comparer<T>.Default a EqualityComparer<T>.Default vlastností.
Funkce 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 načtení 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é IEnumerator<T> rozhraní implementované obecnými enumerátory dědí negenerické rozhraní; MoveNext členyReset, které nezávisí na parametru
T
typu , se zobrazují pouze na negenerickém IEnumerator 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 a Doublebyly aktualizovány tak, Int32 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.