Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memberikan gambaran umum tentang antarmuka generik .NET yang menyediakan fungsionalitas umum di seluruh keluarga jenis generik.
Antarmuka generik menyediakan mitra yang aman untuk 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.
Nota
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 Kovariansi dan Kontravariansi.
Komparasi kesetaraan dan urutan
Antarmuka generik System dan System.IComparable<T>, seperti antarmuka nongenerik mereka masing-masing, menentukan metode untuk perbandingan urutan dan perbandingan kesetaraan dalam System.IEquatable<T> namespace. Jenis mengimplementasikan antarmuka ini untuk memberikan kemampuan untuk melakukan perbandingan tersebut.
System.Collections.Generic namespace, IComparer<T> dan IEqualityComparer<T> antarmuka generik menawarkan cara untuk menentukan perbandingan urutan atau kesetaraan untuk jenis yang tidak menerapkan antarmuka System.IComparable<T> atau System.IEquatable<T>. Mereka juga menyediakan cara untuk menentukan ulang hubungan tersebut untuk jenis yang memerlukannya.
Antarmuka ini digunakan oleh metode dan konstruktor dari banyak kelas koleksi generik. Misalnya, Anda dapat meneruskan objek generik IComparer<T> ke konstruktor kelas untuk menentukan urutan pengurutan SortedDictionary<TKey,TValue> 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 generik Comparer<T> dan EqualityComparer<T> menyediakan kelas dasar untuk implementasi antarmuka generik IComparer<T> dan IEqualityComparer<T> serta memberikan perbandingan urutan dan kesetaraan default melalui masing-masing properti Comparer<T>.Default dan EqualityComparer<T>.Default.
Fungsionalitas pengumpulan
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 antarmuka ICollection<T> generik dengan metode untuk pengambilan data terindeks.
Antarmuka IDictionary<TKey,TValue> generik memperluas antarmuka ICollection<T> generik dengan metode untuk pengambilan berdasarkan kunci. Jenis kamus generik di pustaka kelas dasar .NET juga mengimplementasikan antarmuka nongenerik IDictionary .
Antarmuka IEnumerable<T> generik menyediakan struktur enumerator generik. Antarmuka IEnumerator<T> generik yang diimplementasikan oleh enumerator generik mewarisi antarmuka nongenerik IEnumerator; anggota MoveNext dan Reset, yang tidak bergantung pada parameter jenis
T, 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 ruang nama System.Numerics yang menjelaskan jenis yang mirip 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.