2013-10-25 23 views
0

有人可以幫助我理解以下方法之間的優缺點(如果有),它們將存儲實體的功能存儲爲天藍色(在我的情況下)?使用和不使用泛型的方法之間的區別

public bool Save<T>(string tableName, T entity) where T : TableEntityBase, new() 
{ 
    throw new NotImplementedException(); 
} 

VS

public bool Save(string tableName, TableEntityBase entity) 
{ 
    throw new NotImplementedException(); 
} 
+0

這兩種情況都會引發異常S: –

+0

它可能是一個錯誤,但第一個允許使用'new T()',而第二個可能是一個抽象類...因此您不能執行'新的TableEntityBase()'。 –

+0

因爲您的泛型變量專用於相同的對象(而不是接口),所以我沒有看到太多的優勢。 – Dweeberly

回答

0

隨着通用的方法,你可以傳遞參數T只有

  • 它是TableEntityBase一個子類,
  • 有一個公共的無參數的構造函數

現在你可以肯定的是new T();不會拋出異常..


,但在非泛型方法的情況下

new TableEntityBase(); 

會拋出異常櫃面它不具有無參數構造函數

+0

「拋出異常」?編譯器已經抱怨缺少的構造函數,不會讓你啓動程序! – gehho

相關問題