C#can'中的泛型;找不到

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>();

所以我来自Java,对如何将泛型与C#结合使用有点困惑。我有一个lambda函数,它应该接受一个列表和谓词(不同的对象类型)。当我指定要使用泛型时,编译器会抱怨找不到T。这是我的lambda:

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>
{
    ...
}