Általános felületek a .NET-ben
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 adapterek típusbiztos megfelelői a nemgenerikus felületeknek a rendezési és egyenlőségi összehasonlításokhoz, valamint az általános gyűjteménytípusok által megosztott funkciókhoz. 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.
Feljegyzé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 Contravariance.
Egyenlőség és rendezési összehasonlítások
A névtérben az System és System.IEquatable<T> az System.IComparable<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 névtérben az System.Collections.Generic és IEqualityComparer<T> az IComparer<T> általános interfészek segítségével rendezési vagy egyenlőségi összehasonlítást határozhat meg az olyan típusok esetében, amelyek nem implementálják az interfésztSystem.IComparable<T>.System.IEquatable<T> 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> az általános osztályok alaposztályokat biztosítanak az és IEqualityComparer<T> az IComparer<T> általános interfészek implementációihoz, valamint alapértelmezett rendezési és egyenlőségi összehasonlításokat is biztosítanak a megfelelő Comparer<T>.Default és EqualityComparer<T>.Default a tulajdonságaik alapjá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> örökli mind az általános IEnumerable<T> , mind a nemgenerikus IEnumerable.
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; a MoveNext típusparamétertől
T
nem függő tagok csak Reset a nemgenerikus 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.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: