使用泛型将对象类型强制转换为泛型类型

时间:2010-04-23 07:55:28

标签: c# .net generics

我对仿制药很新,并试图实现它。我怎么能在这里使用它。

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

我正在尝试将以下值转换为泛型类型,然后将其返回。

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

在这里我需要知道两件事。如何解决上述问题以及如何在我的代码中使用它。 请提供一些例如。

编辑

它给了我错误错误无法找到类型或命名空间名称'T'(您是否缺少using指令或程序集引用?

1 个答案:

答案 0 :(得分: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。