Antarmuka generik di .NET
Artikel ini memberikan gambaran umum tentang . Antarmuka generik NET yang menyediakan fungsionalitas umum di seluruh keluarga jenis generik.
Antarmuka generik menyediakan padanan yang aman untuk jenis ke antarmuka nongenerik untuk perbandingan pemesanan dan kesetaraan, dan untuk fungsionalitas yang dibagikan oleh jenis koleksi generik. .NET 7 memperkenalkan antarmuka generik untuk jenis seperti angka, misalnya, System.Numerics.INumber<TSelf>. Antarmuka ini memungkinkan Anda menentukan metode generik yang menyediakan fungsionalitas matematika, di mana parameter jenis generik dibatasi menjadi jenis yang mengimplementasikan antarmuka generik dan numerik.
Catatan
Parameter jenis dari beberapa antarmuka generik ditandai kovarian atau kontravarian, memberikan fleksibilitas yang lebih besar dalam menetapkan dan menggunakan jenis yang mengimplementasikan antarmuka ini. Untuk informasi selengkapnya, lihat Kovarian dan Kontravarian.
Perbandingan kesetaraan dan pemesanan
Di System namespace layanan, System.IComparable<T> antarmuka generik dan System.IEquatable<T>, seperti rekan nongeneriknya, menentukan metode untuk memesan perbandingan dan perbandingan kesetaraan, masing-masing. Jenis mengimplementasikan antarmuka ini untuk memberikan kemampuan untuk melakukan perbandingan tersebut.
Di System.Collections.Generic namespace layanan, IComparer<T> antarmuka generik dan IEqualityComparer<T> menawarkan cara untuk menentukan perbandingan pemesanan atau kesetaraan untuk jenis yang tidak mengimplementasikan System.IComparable<T> antarmuka atau System.IEquatable<T>. Mereka juga menyediakan cara untuk mendefinisikan ulang hubungan tersebut untuk jenis yang dilakukan.
Antarmuka ini digunakan oleh metode dan konstruktor dari banyak kelas koleksi generik. Misalnya, Anda dapat meneruskan IComparer<T> objek generik ke konstruktor SortedDictionary<TKey,TValue> kelas untuk menentukan urutan pengurutan untuk jenis yang tidak menerapkan generik System.IComparable<T>. Ada kelebihan beban Array.Sort metode statis generik dan List<T>.Sort metode instans untuk mengurutkan array dan daftar menggunakan implementasi generik IComparer<T>.
Kelas Comparer<T> generik dan EqualityComparer<T> menyediakan kelas dasar untuk implementasi IComparer<T> antarmuka generik dan IEqualityComparer<T> juga memberikan perbandingan urutan dan kesetaraan default melalui masing-masing Comparer<T>.Default properti.EqualityComparer<T>.Default
Fungsionalitas Koleksi
Antarmuka ICollection<T> generik adalah antarmuka dasar untuk jenis koleksi generik. Ini menyediakan fungsionalitas dasar untuk menambahkan, menghapus, menyalin, dan menghitung elemen. ICollection<T> mewarisi dari generik IEnumerable<T> dan nongenerik IEnumerable.
Antarmuka IList<T> generik memperluas ICollection<T> antarmuka generik dengan metode untuk pengambilan terindeks.
Antarmuka IDictionary<TKey,TValue> generik memperluas ICollection<T> antarmuka generik dengan metode untuk pengambilan terindeks. Jenis kamus generik di pustaka kelas dasar .NET juga mengimplementasikan IDictionary antarmuka nongenerik.
Antarmuka IEnumerable<T> generik menyediakan struktur enumerator generik. Antarmuka IEnumerator<T> generik yang diimplementasikan oleh enumerator generik mewarisi antarmuka nongenerik IEnumerator; MoveNext, dan Reset anggota, yang tidak bergantung pada parameter
T
jenis, hanya muncul pada antarmuka nongenerik. Ini berarti bahwa setiap konsumen antarmuka nongenerik juga dapat mengonsumsi antarmuka generik.
Fungsionalitas matematika
.NET 7 memperkenalkan antarmuka generik di System.Numerics namespace layanan yang menjelaskan jenis seperti angka dan fungsionalitas yang tersedia untuk mereka. 20 jenis numerik yang disediakan pustaka kelas dasar .NET, misalnya, Int32 dan Double, telah diperbarui untuk mengimplementasikan antarmuka ini. Yang paling menonjol dari antarmuka ini adalah INumber<TSelf>, yang kira-kira sesuai dengan angka "nyata".
Untuk informasi selengkapnya tentang antarmuka ini, lihat Matematika generik.