Generic Method ไม่สามารถ Return null โดยตรงได้ เพราะ T อาจเป็น Value Type (struct) ที่ไม่รองรับ Null
ปัญหา
public static T Add(T a, T b) { return null; // Compile Error: Cannot convert null to type parameter T }
แก้ด้วย default(T)
default(T) คืนค่า Default ของ Type T:
- Reference Type →
null - Value Type (int, bool, struct) →
0,false,zero-initialized struct
public static T Add(T a, T b) { T defaultVal = default(T); Console.WriteLine(defaultVal); // 0 สำหรับ int return defaultVal; }
C# 7.1+ ใช้ default Literal
return default; // Type Inference จาก Return Type