Dalam pertanyaan StackExchange yang berbeda, saya perhatikan seseorang menggunakan prototipe ini:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
Mengingat hanya ada satu jenis kendala ( SomeSpecificReferenceType
), apa perbedaan dan keuntungan menulisnya seperti itu, bukan hanya:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
Dalam kedua kasus, arg
akan dikenakan pemeriksaan jenis waktu kompilasi. Dalam kedua kasus, tubuh metode dapat dengan aman mengandalkan pengetahuan yang arg
(atau merupakan keturunan) jenis tertentu yang dikenal pada waktu kompilasi.
Apakah ini kasus pengembang yang terlalu bersemangat belajar tentang obat generik sebelum belajar tentang warisan biasa? Atau adakah alasan yang sah mengapa tanda tangan metode ditulis seperti ini?