C#can'中的泛型;找不到
所以我来自Java,对如何将泛型与C#结合使用有点困惑。我有一个lambda函数,它应该接受一个列表和谓词(不同的对象类型)。当我指定要使用泛型时,编译器会抱怨找不到T。这是我的lambda:C#can'中的泛型;找不到,c#,C#,所以我来自Java,对如何将泛型与C#结合使用有点困惑。我有一个lambda函数,它应该接受一个列表和谓词(不同的对象类型)。当我指定要使用泛型时,编译器会抱怨找不到T。这是我的lambda: private List<T> LoopCompareLambda(List<T> list, Predicate<T> condition) { List<T> returnList = new List<T>();
private List<T> LoopCompareLambda(List<T> list, Predicate<T> condition)
{
List<T> returnList = new List<T>();
foreach (T sensor in list)
{
if (condition(sensor))
{
returnList.Add(sensor);
}
}
return returnList;
}
private List LoopCompareLambda(列表,谓词条件)
{
List returnList=新列表();
foreach(列表中的T传感器)
{
if(条件(传感器))
{
返回列表。添加(传感器);
}
}
退货清单;
}
试试看
在.NET中,人们强烈倾向于使用Func
而不是Predicate
private static List LoopCompareLambda(IEnumerable List,Func条件)
将方法的符号更改为
private List<T> LoopCompareLambda<T>(List<T> list, Predicate<T> condition)
private List LoopCompareLambda(列表,谓词条件)
必须将泛型类型添加到方法中。您可以在一个方法中使用多个泛型,并添加如下条件
private List<T> LoopCompareLambda<T>(List<T> list, Predicate<T> condition) where T : class, new()
private List LoopCompareLambda(列表,谓词条件),其中T:class,new()
还有。您的类需要是泛型的
class MyGenericClass<T>
{
...
}
class MyGenericClass
{
...
}
谢谢!看了一大堆问题,但没有回答!你能使用LINQ吗?当他只是将泛型类型添加到方法中时就不行了;)
private List<T> LoopCompareLambda<T>(List<T> list, Predicate<T> condition)
private List<T> LoopCompareLambda<T>(List<T> list, Predicate<T> condition) where T : class, new()
class MyGenericClass<T>
{
...
}