C# 如何通过ILST<;T>;函数中的参数
我有这个功能:C# 如何通过ILST<;T>;函数中的参数,c#,function,collections,C#,Function,Collections,我有这个功能: public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti) { return listaCompleta; } 公共静态IList myFunction(IList listaCompleta,int numeriopacchetti) { 返回listaCompleta; } 但如果我试着用以下方式来称呼它: IList<
public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti)
{
return listaCompleta;
}
公共静态IList myFunction(IList listaCompleta,int numeriopacchetti)
{
返回listaCompleta;
}
但如果我试着用以下方式来称呼它:
IList<SomeObject> listPacchetti = (from SomeObject myso in SomeObjects
select myso).ToList();
listPacchetti = myFunction(listPacchetti, 1);
IList listPacchetti=(来自SomeObject中的SomeObject myso
选择myso.ToList();
listPacchetti=myFunction(listPacchetti,1);
当我编译它时,它说方法“myFunction(IList,int)”的类型参数不能从用法中推断出来。尝试显式指定类型参数。
事实上,我需要使用IList(或集合索引,而不是IEnumerable),并且我需要向函数传递一个泛型对象(这次是IList
,下次可能是IList
)
我能做吗?或者呢?我认为我不能使用IList作为类型参数
编辑-完成代码
我从另一个类调用函数
IList listPacchetti=(来自数据包中的数据包
选择pack.ToList();
listpachetti=Utility.Extracts(listpachetti,6);
函数类
公共类实用程序
{
公用事业()
{
}
公共静态IList Extracts(IList listaCompleta,int numeriopacchetti)//这里是带有警告的行
{
返回listaCompleta;
}
}
试试这个
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);
}
公共类SomeObject
{ }
公共静态列表MyFunction(列表listaCompleta,int numeriopacchetti)
{
返回listaCompleta;
}
静态void Main(字符串[]参数)
{
var someObjects=新列表();
var listPacchetti=(来自someObjects中的SomeObject myso
选择myso.ToList();
listPacchetti=MyFunction(listPacchetti,1);
}
您的实用程序类是否为.NET Framework 3.0或更高版本编译,并且您的代码是否引用了System.Collections.Generic
命名空间
因此,
是否使用System.Collections.Generic代码>丢失?Markzzz:从您发布的有关IList的错误信息来看,我怀疑您导入了错误的命名空间。您的代码顶部需要一个using System.Collections.Generic
,我猜您的using System.Collections
。这就是为什么编译器告诉您不能将IList
用作泛型。我觉得这段代码不错。确切的编译器错误是什么?添加了整个主题的错误…嗯,没有歧义T
必须推断为SomeObject
。我怀疑错误在别处。@cdhowie:不,我只在那里得到错误。如果我添加了,我就解决了问题,但是函数上仍然有一些警告:System.Collections.IList不能用作泛型类型
hi,我可以编译代码,没有警告或错误(.NET 4)。你在编译.NET的哪个版本?@markzzz-你确定是同一个错误吗?您列出的错误应该通过显式提供类型参数来解决,就像iain所做的那样。如果这不起作用,那么您的错误与您发布的代码无关!是的,它可以工作,但有一个警告:System.Collections.IList不能用作泛型类型。不太好的代码…更改为列表我将更改示例好的,我认为问题是我们正在查看不同的代码:)您能用实际代码更新问题并指出警告的位置吗?我可以看得更清楚。是的……这就是问题所在:)
public class Utility
{
public Utility()
{
}
public static IList<T> Extracts<T>(IList<T> listaCompleta, int numeroPacchetti) // HERE THERE IS THE LINE WITH WARNINGS
{
return listaCompleta;
}
}
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);
}