ฉันมีวิธีการทั่วไปที่มีรหัส (จำลอง) (ใช่ฉันทราบว่า IList มีภาคแสดง แต่รหัสของฉันไม่ได้ใช้ IList แต่มีการรวบรวมอื่น ๆ แต่นี่ก็ไม่เกี่ยวข้องกับคำถาม ... )
static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
foreach T thing in collecion
{
if (thing.Id == id)
return thing;
}
return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead.
}
สิ่งนี้ทำให้ฉันมีข้อผิดพลาดในการสร้าง
"ไม่สามารถแปลงค่าว่างเป็นพารามิเตอร์ประเภท 'T' ได้เนื่องจากอาจเป็นประเภทค่าลองใช้ 'ค่าเริ่มต้น (T)' แทน
ฉันสามารถหลีกเลี่ยงข้อผิดพลาดนี้ได้หรือไม่?
null
ไม่ว่าจะT
เป็นObject
หรือหรือint
char