Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk áttekintést nyújt a . A NET általános felületei, amelyek általános típusok családjainak általános funkcióit biztosítják.
Az általános felületek típusbiztos megfelelői a nem általános felületeknek a rendezési és egyenlőségi összehasonlítások céljára, valamint a generikus gyűjteménytípusok által megosztott funkciókra. A .NET 7 általános felületeket vezet be például a számszerű típusokhoz System.Numerics.INumber<TSelf>. Ezek az interfészek lehetővé teszik a matematikai funkciókat biztosító általános módszerek meghatározását, ahol az általános típusparaméter egy általános numerikus interfészt megvalósító típusnak van korlátozva.
Megjegyzés:
Számos általános interfész típusparaméterei kovariant vagy contravariant jelöléssel vannak eladva, így nagyobb rugalmasságot biztosítanak az ezen interfészeket implementáló típusok hozzárendelésében és használatában. További információ: Kovariancia és kontravariancia.
Egyenlőség és rendezési összehasonlítások
A névtérben az System és System.IComparable<T> az System.IEquatable<T> általános felületek, például a nemgenerikus megfelelőik, az összehasonlítások és egyenlőségi összehasonlítások sorrendjének módszereit határozzák meg. A típusok ezeket az interfészeket úgy implementálják, hogy lehetővé teszik az ilyen összehasonlítások elvégzését.
A System.Collections.Generic névtérben a IComparer<T> és IEqualityComparer<T> generikus interfészek lehetővé teszik a rendezési vagy egyenlőségi összehasonlítás meghatározását azoknak a típusoknak, amelyek nem implementálják a System.IComparable<T> vagy System.IEquatable<T> interfészt. Emellett lehetővé teszik a kapcsolatok újradefiniációit az olyan típusok esetében is, amelyek igen.
Ezeket az interfészeket számos általános gyűjteményosztály metódusai és konstruktorai használják. Egy általános IComparer<T> objektumot átadhat például az SortedDictionary<TKey,TValue> osztály konstruktorának, hogy rendezési sorrendet adjon meg egy olyan típushoz, amely nem implementálja az általánosat System.IComparable<T>. Az általános statikus metódus és a Array.SortList<T>.Sort tömbök és listák általános IComparer<T> implementációkat használó rendezésére szolgáló példánymetódus túlterhelt.
Az Comparer<T> és EqualityComparer<T> általános osztályok alaposztályként szolgálnak a IComparer<T> és IEqualityComparer<T> általános interfészek implementációihoz, és alapértelmezett rendezési és egyenlőségi összehasonlításokat is biztosítanak a megfelelő Comparer<T>.Default és EqualityComparer<T>.Default tulajdonságaik révén.
Gyűjteményfunkciók
Az ICollection<T> általános felület az általános gyűjteménytípusok alapszintű felülete. Alapvető funkciókat biztosít az elemek hozzáadásához, eltávolításához, másolásához és számbavételéhez. ICollection<T> mind az általános IEnumerable<T>, mind a nemgenerikus IEnumerable örököl.
Az IList<T> általános felület kibővíti az általános felületet az ICollection<T> indexelt lekérés módszereivel.
Az IDictionary<TKey,TValue> általános felület kibővíti az ICollection<T> általános felületet a kulcsos lekérés módszereivel. A .NET alaposztálytár általános szótártípusai a nemgenerikus IDictionary felületet is implementálják.
Az IEnumerable<T> általános felület általános enumerátorstruktúrát biztosít. Az IEnumerator<T> általános enumerátorok által implementált általános felület örökli a nemgenerikus IEnumerator felületet; azok a tagok, amelyek nem függnek a MoveNext típusparamétertől, csak a nemgenerikus Reset felületen jelennek meg. Ez azt jelenti, hogy a nemgenerikus felület bármely felhasználója használhatja az általános felületet is.
Matematikai funkciók
A .NET 7 általános interfészeket vezet be a System.Numerics névtérben, amelyek számszerű típusokat és a számukra elérhető funkciókat írják le. A .NET alaposztálykódtár által biztosított 20 numerikus típust frissítettük például Int32Doubleaz interfészek implementálásához. Ezek közül az interfészek közül a legszembetűnőbb az INumber<TSelf>, amely nagyjából egy "valós" számnak felel meg.
További információ ezekről a felületekről: Általános matematika.