Membaca ini , saya belajar bahwa memungkinkan metode untuk menerima parameter dari berbagai jenis dengan menjadikannya metode generik. Dalam contoh, kode berikut digunakan dengan batasan tipe untuk memastikan "U" adalah IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Saya menemukan beberapa kode lagi yang memungkinkan menambahkan beberapa batasan tipe, seperti:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Namun, kode ini muncul untuk menegakkan yang arg
harus berupa tipe ParentClass
dan ChildClass
. Yang ingin saya lakukan adalah mengatakan bahwa arg bisa berupa ParentClass
atau ChildClass
dengan cara berikut:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Bantuan Anda dihargai seperti biasa!
where T : string
, sebagai string
adalah disegel kelas. Satu-satunya hal berguna yang dapat Anda lakukan adalah mendefinisikan kelebihan string
dan T : Exception
, seperti yang dijelaskan oleh @ Botz3000 dalam jawabannya di bawah ini.
arg
adalah yang ditentukan oleh object
- jadi mengapa tidak hanya menghapus obat generik dari gambar dan membuat jenisnya arg
object
? Apa yang kamu dapat?