使用泛型将类型对象类型转换为泛型类型
我对泛型非常陌生,试图实现它。我如何在这里使用它。使用泛型将类型对象类型转换为泛型类型
private T returnValueFromGrid(int RowNo, int ColNo)
{
return (T) dgvCurrencyMaster.Rows[RowNo].Cells[ColNo].Value;
}
我想将以下值转换为泛型类型,然后将其返回。
dgvCurrencyMaster.Rows[RowNo].Cells[ColNo].Value
这里我需要知道两件事。如何做到上述问题以及如何在我的代码中使用它。 请提供一些例如。
编辑
这是给我的错误错误类型或命名空间名称“T”找不到(是否缺少using指令或程序集引用
它只是?
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。
@Evgeny:Thx,这个解决了。你能否提供一些描述为什么T在功能的两边都被使用过。他们在做什么等等。如果你能提供一些相同的参考资料,那将是非常有用的。 – 2010-04-23 08:13:51
在右边'
您需要将''添加到您的方法声明中 - 请参阅我更新的答案(或Jon的)。 –
EMP
2010-04-23 08:09:52