如何在函数</t>中传递IList <t>参数

时间:2011-08-11 07:49:03

标签: c# function collections

我有这个功能:

public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti)
{
    return listaCompleta;
}

但是如果我试着用它来调用它:

IList<SomeObject> listPacchetti = (from SomeObject myso in SomeObjects
                                  select myso).ToList();

listPacchetti = myFunction(listPacchetti, 1);

编译时我说The type arguments for method 'myFunction<T>(IList<T>, int)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

事实是我需要使用IList(或集合索引,而不是IEnumerable),我需要将一个泛型对象传递给函数(这次是IList<SomeObject>,下次可能是{{1 }})

我可以这样做吗?或者它呢?我认为我不能使用IList作为类型参数...

编辑 - 完整代码

我从另一个班级打电话

IList<AnotherObject>

具有功能的课程

IList<Packet> listPacchetti = (from Packet pack in Packets
                                               select pack).ToList();

listPacchetti = Utility.Extracts<Packet>(listPacchetti, 6);

3 个答案:

答案 0 :(得分:3)

您的实用程序类是否已针对.NET Framework 3.0或更高版本进行编译,并且您的代码是否引用了System.Collections.Generic命名空间?

那么,using System.Collections.Generic;是否遗失?

答案 1 :(得分:3)

Markzzz:根据您发布的有关IList错误的内容,我怀疑您导入了错误的命名空间。您的代码顶部需要using System.Collections.Generic,我猜你有using System.Collections。这就是编译器告诉你IList不能用作通用的原因。

答案 2 :(得分:2)

试试这个;

    public class SomeObject
    { }

    public static List<T> MyFunction<T>(List<T> listaCompleta, int numeroPacchetti)
    {
        return listaCompleta;
    }
    static void Main(string[] args)
    {
        var someObjects = new List<SomeObject>();

        var listPacchetti = (from SomeObject myso in someObjects
                                           select myso).ToList();

        listPacchetti =  MyFunction<SomeObject>(listPacchetti, 1);
    }