代碼:
public void Equal<T>(T OldT, T NewT, string UpdateUser)
{
Equal(OldT, null, UpdateUser); // 編譯錯誤:無法將 null 轉換為類型參數 T
}
public void Equal<T>(T OldT, T NewT, string UpdateUser) where T : class
{
Equal(OldT, null, UpdateUser); // 合法:T 確認為引用類型
}
public void Equal<T>(T OldT, T NewT, string UpdateUser)
{
Equal(OldT, default(T), UpdateUser); // 值類型得 0/false,引用類型得 null
}
// 引用類型版本
public void Equal<T>(T OldT, T NewT, string UpdateUser) where T : class { ... }
// 值類型版本
public void Equal<T>(T OldT, T NewT, string UpdateUser) where T : struct { ... }
回復建議「用 `""` 試試」僅適用於 `T` 為 `string` 時。泛型方法旨在處理任意類型,硬編碼字符串字面量違背泛型初衷。