小编ler*_*nau的帖子

泛型:T不能分配给已知类型.(为什么不编译?)

我最近试图通过尽可能使用泛型来简化我的一些代码.然而,这个特殊的例子令我难过......但它看起来很无辜!

这是违规代码(简化).

public static void Updater(CommodityVO vo)
{
    // Update something
}

public static void BulkUpdate<T>(IEnumerable<T> vos)
{
    foreach (var vo in vos)
    {
        Updater(vo);
    }
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,'Updater(vo)'中的'vo'得到一条波浪线,编译器(VS2010)报告:

参数类型'T'不能分配给参数类型CommodityVO

  • "vo"的类型似乎并不重要.例如:字符串也不起作用.
  • List <T>与IEnumerable <T>的行为相同
  • 各种'where'条款似乎没有效果.
  • 我现在一直在解决这个问题.但是我想知道为什么这被拒绝了...特别是因为这对我来说都很好看.我错过了什么?

    所有帮助赞赏.

    c# generics

    8
    推荐指数
    1
    解决办法
    5047
    查看次数

    标签 统计

    c# ×1

    generics ×1