Dalam C # apa where T : class
artinya?
Yaitu.
public IList<T> DoThis<T>() where T : class
Sederhananya, ini membatasi parameter generik ke kelas (atau lebih spesifiknya tipe referensi yang bisa berupa kelas, antarmuka, delegasi, atau tipe array).
Lihat artikel MSDN ini untuk perincian lebih lanjut.
Ini adalah batasan tipe generik . Dalam hal ini berarti tipe generik
T
harus menjadi tipe referensi (kelas, antarmuka, delegasi, atau tipe array).sumber
Ini adalah batasan tipe
T
, yang menentukan bahwa itu harus kelas.The
where
klausa dapat digunakan untuk menentukan batasan jenis lain, misalnya:Untuk informasi lebih lanjut, lihat halaman MSDN pada
where
klausa , atau batasan parameter umum .sumber
where T : class, IComparable, new()
Itu membatasi
T
untuk tipe referensi . Anda tidak akan dapat menempatkan tipe nilai (struct
kecuali tipe primitifstring
) di sana.sumber
itu berarti bahwa jenis yang digunakan seperti
T
ketika metode generik digunakan harus kelas - yaitu tidak dapat berupa struct atau dibangun dalam jumlah sepertiint
ataudouble
sumber
where T: class
secara harfiah berarti ituT has to be a class
. Ini bisa berupa tipe referensi apa saja. Sekarang setiap kali kode apapun panggilan AndaDoThis<T>()
metode itu harus menyediakan kelas untuk menggantikan T . Misalnya jika saya akan memanggilDoThis<T>()
metode Anda maka saya harus memanggilnya seperti berikut:Jika metthod Anda seperti berikut:
Lalu di mana T muncul dalam metode Anda, itu akan diganti oleh MyClass. Jadi metode terakhir yang dipanggil kompiler, akan terlihat seperti berikut:
sumber
new T()
tidak mungkin denganwhere T : class
. Anda harus menentukanwhere T: new()
untuk diizinkan melakukannya.Ini disebut batasan parameter tipe. Secara efektif itu membatasi tipe T apa.
Batasan pada Parameter Type (Panduan Pemrograman C #)
sumber
T mewakili tipe objek, ini menunjukkan bahwa Anda dapat memberikan semua tipe. IList: if IList s = IList baru; Sekarang s.add ("Selalu terima string.").
sumber
Di sini T merujuk ke Kelas. Ini bisa menjadi tipe referensi.
sumber
'T' mewakili tipe generik. Itu berarti dapat menerima semua jenis kelas. Artikel berikut mungkin membantu:
sumber