Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera omówienie ogólnych interfejsów platformy .NET, które zapewniają typowe funkcje w różnych rodzinach typów ogólnych.
Interfejsy ogólne zapewniają bezpieczne dla typów odpowiedniki interfejsów niegenerycznych na potrzeby porównywania kolejności i równości oraz funkcjonalności, które są współużytkowane przez typy kolekcji ogólnych. Platforma .NET 7 wprowadza interfejsy ogólne dla typów podobnych do liczb, na przykład System.Numerics.INumber<TSelf>. Te interfejsy umożliwiają definiowanie metod ogólnych, które zapewniają funkcje matematyczne, gdzie parametr typu ogólnego jest ograniczony jako typ implementujący ogólny, liczbowy interfejs.
Uwaga / Notatka
Parametry typu kilku interfejsów ogólnych są oznaczone jako kowariantne lub kontrawariantne, co zapewnia większą elastyczność w przypisywaniu i używaniu typów, które implementują te interfejsy. Aby uzyskać więcej informacji, zobacz Covariance i Contravariance.
Porównania równości i kolejności
System W przestrzeni nazw, interfejsy ogólne System.IComparable<T> oraz System.IEquatable<T> definiują metody do porządkowania porównań i porównań równości, odpowiednio, tak jak ich niegeneryczne odpowiedniki. Typy implementują te interfejsy, aby zapewnić możliwość wykonywania takich porównań.
W przestrzeni nazw System.Collections.Generic ogólne interfejsy IComparer<T> i IEqualityComparer<T> oferują sposób określania porządku lub porównywania równości dla typów, które nie implementują interfejsu System.IComparable<T> lub System.IEquatable<T>. Zapewniają one również sposób ponownego zdefiniowania tych relacji dla typów, które to robią.
Te interfejsy są używane przez metody i konstruktory wielu klas kolekcji ogólnych. Na przykład można przekazać obiekt ogólny IComparer<T> do konstruktora SortedDictionary<TKey,TValue> klasy, aby określić kolejność sortowania dla typu, który nie implementuje ogólnego System.IComparable<T>. Istnieją przeciążenia ogólnej metody statycznej Array.Sort oraz metody instancji List<T>.Sort do sortowania tablic i list przy użyciu ogólnych implementacji IComparer<T>.
Klasy ogólne Comparer<T> i EqualityComparer<T> zapewniają klasy bazowe dla implementacji ogólnych interfejsów IComparer<T> i IEqualityComparer<T>, a także zapewniają domyślne porównania kolejności i równości przez odpowiednie właściwości Comparer<T>.Default i EqualityComparer<T>.Default.
Funkcje kolekcji
Interfejs ICollection<T> ogólny to podstawowy interfejs dla typów kolekcji ogólnych. Zapewnia podstawowe funkcje dodawania, usuwania, kopiowania i wyliczania elementów. ICollection<T> dziedziczy zarówno z typu ogólnego IEnumerable<T>, jak i z niegenerycznego IEnumerable.
Interfejs IList<T> generyczny rozszerza ICollection<T> generyczny interfejs metodami pobierania za pomocą indeksu.
Ogólny interfejs IDictionary<TKey,TValue> rozszerza ogólny interfejs ICollection<T> o metody umożliwiające pobieranie danych za pomocą kluczy. Ogólne typy słowników w bibliotece klas bazowych platformy .NET implementują również interfejs niegenericzny IDictionary .
Interfejs IEnumerable<T> ogólny zapewnia ogólną strukturę modułu wyliczającego. Interfejs IEnumerator<T> ogólny implementowany przez wyliczacze ogólne dziedziczy interfejs niogólny IEnumerator; elementy członkowskie MoveNext i Reset, które nie zależą od parametru typu
T
, pojawiają się tylko w interfejsie niogólnym. Oznacza to, że każdy użytkownik interfejsu niegenericznego może również korzystać z interfejsu ogólnego.
Funkcje matematyczne
Platforma .NET 7 wprowadza ogólne interfejsy w System.Numerics przestrzeni nazw, które opisują typy podobne do liczb i dostępne dla nich funkcje. 20 typów liczbowych, które udostępnia biblioteka klas bazowych platformy .NET, na przykład Int32 i Double, zostały zaktualizowane w celu zaimplementowania tych interfejsów. Najbardziej widocznym z tych interfejsów jest INumber<TSelf>, który w przybliżeniu odpowiada "rzeczywistej" liczbie.
Aby uzyskać więcej informacji na temat tych interfejsów, zobacz Ogólne obliczenia matematyczne.