Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 17968|Jawab: 0

[Sumber] C# di mana analisis penggunaan

[Salin tautan]
Diposting pada 12/07/2016 11.35.43 | | |

Klausa where digunakan untuk menentukan batasan jenis yang dapat berfungsi sebagai variabel untuk parameter jenis yang ditentukan dalam deklarasi generik.
1. Kendala antarmuka.
Misalnya, Anda dapat mendeklarasikan kelas generik MyGenericClass, sehingga parameter jenis T dapat mengimplementasikan antarmuka IComparable<T>:

kelas publik MyGenericClass<T> di mana T:IComparable { }

2. Batasan kelas dasar: Menunjukkan bahwa jenis harus menggunakan kelas yang ditentukan sebagai kelas dasar (atau kelas itu sendiri) untuk digunakan sebagai parameter jenis untuk jenis generik tersebut.
Setelah batasan tersebut digunakan, itu harus muncul sebelum semua batasan lain pada jenis parameter.
kelas MyClassy<T, U>
di mana T : kelas
di mana U : struct
{
}

Klausul 3.where juga dapat menyertakan batasan konstruktor.
Anda dapat menggunakan operator baru untuk membuat instance parameter jenis; Tetapi argumen type harus dibatasi oleh batasan konstruktor new() untuk ini. Batasan new() memberi tahu kompiler bahwa semua jenis argumen yang disediakan harus memiliki konstruktor tanpa parameter (atau default) yang dapat diakses. Sebagai contoh:
kelas publik MyGenericClass <T> di mana T: IComparable, new()
{
Baris berikut tidak dimungkinkan tanpa batasan new():
T item = new T();
}
Batasan new() muncul di akhir klausa where.

4. Untuk beberapa parameter jenis, setiap parameter jenis menggunakan klausa where,
Misalnya:
antarmuka MyI { }
kelas Kamus<TKey,TVal>
di mana TKey: IComparable, IEnumerable
tempat TVal: MyI
{
public void Tambahkan (Kunci TKey, TVal val)
{
}
}

5. Anda juga dapat melampirkan batasan ke parameter jenis metode generik, seperti:

bool publik MyMethod<T>(T t) di mana T : IMyInterface { }

Perhatikan bahwa sintaks untuk mendeskripsikan batasan parameter jenis sama untuk delegasi dan metode:

delegasi T MyDelegate<T>() di mana T : new()





Generik Tempat

Generik Di mana dapat memenuhi syarat parameter jenis. Ada beberapa cara.

·di mana T : struct membatasi parameter jenis yang harus diwarisi T dari System.ValueType.

·di mana T: class membatasi jenis Parameter T harus berupa jenis referensi, yaitu, tidak dapat diwarisi dari System.ValueType.

di mana T : new() membatasi parameter jenis T harus memiliki konstruktor default

·di mana T : NameOfClass membatasi parameter jenis yang harus diwarisi T dari kelas atau mengimplementasikan antarmuka.

Kualifikasi ini dapat digabungkan, seperti: kelas publik Titik di mana T : class, IComparable, new()




Mantan:c# Kelas bantuan NHibernate
Depan:c# http mendengarkan utas dengan HttpListener
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com