ในคำถาม StackExchange ที่แตกต่างกันฉันสังเกตเห็นคนที่ใช้ต้นแบบนี้:
void DoSomething<T>(T arg) where T: SomeSpecificReferenceType
{
//Code....
}
โปรดจำไว้ว่ามีข้อ จำกัด ประเภทเดียว ( SomeSpecificReferenceType
) ข้อแตกต่างและความได้เปรียบของการเขียนแบบนี้คืออะไรแทนที่จะเป็นเพียง:
void DoSomething(SomeSpecificReferenceType arg)
{
//Code....
}
ในทั้งสองกรณีarg
จะต้องมีการตรวจสอบประเภทเวลาคอมไพล์ ในทั้งสองกรณีเนื้อความของวิธีการนั้นสามารถพึ่งพาความรู้ที่arg
เป็นของ (หรือเป็นผู้สืบทอด) ประเภทที่เฉพาะเจาะจงซึ่งรู้จักกันในเวลารวบรวม
นี่เป็นกรณีของผู้พัฒนา overzealous การเรียนรู้เกี่ยวกับ generics ก่อนที่จะเรียนรู้เกี่ยวกับมรดกธรรมดาหรือไม่? หรือมีเหตุผลที่ถูกต้องว่าทำไมลายเซ็นวิธีการที่จะเขียนด้วยวิธีนี้?