2010-04-23 214 views
3

我對泛型非常陌生,試圖實現它。我如何在這裏使用它。使用泛型將類型對象類型轉換爲泛型類型

private T returnValueFromGrid(int RowNo, int ColNo) 
     { 
      return (T) dgvCurrencyMaster.Rows[RowNo].Cells[ColNo].Value; 
     } 

我想將以下值轉換爲泛型類型,然後將其返回。

dgvCurrencyMaster.Rows[RowNo].Cells[ColNo].Value 

這裏我需要知道兩件事。如何做到上述問題以及如何在我的代碼中使用它。 請提供一些例如。

編輯

這是給我的錯誤錯誤類型或命名空間名稱「T」找不到(是否缺少using指令或程序集引用

+1

您需要將''添加到您的方法聲明中 - 請參閱我更新的答案(或Jon的)。 – EMP 2010-04-23 08:09:52

回答

4

它只是?

private T returnValueFromGrid<T>(int RowNo, int ColNo) 
{ 
    return (T)dgvCurrencyMaster.Rows[RowNo].Cells[ColNo].Value; 
} 

你以同樣的方式使用T,如果它是一個類型的名稱。

話雖如此,如果這就是你所做的一切,那麼你不會從泛型中獲得任何好處,因爲方法的調用者必須指定類型。也就是說,使用泛型它看起來像這樣:

var x = returnValueFromGrid<SomeType>(1, 2); 

沒有泛型它應該是這樣的:

var x = (SomeType)returnValueFromGrid(1, 2); 

你簡單地推動投降入法,但沒有真正保存任何工作 - 無論是程序員還是CPU。

+0

@Evgeny:Thx,這個解決了。你能否提供一些描述爲什麼T在功能的兩邊都被使用過。他們在做什麼等等。如果你能提供一些相同的參考資料,那將是非常有用的。 – 2010-04-23 08:13:51

+0

在右邊''說「這個函數有一個名爲T的類型參數」。左邊的'T'就是返回類型 - 恰好是稍後聲明的類型參數。 – EMP 2010-04-23 08:19:54