我正在尝试编写一种采用任何类型列表并比较项目的方法。这是我到目前为止所做的,但它没有编译。
protected bool DoListsContainAnyIdenticalRefernces(List<T> firstList, List<T> secondList)
{
bool foundMatch = false;
foreach (Object obj in firstList)
{
foreach (Object thing in secondList)
{
if (obj.Equals(thing))
{
foundMatch = true;
}
}
}
return foundMatch;
}
它表示参数中的两个T有错误,if语句中有“obj”和“thing”。
答案 0 :(得分:1)
如果您不在泛型类中,则需要将通用参数T
添加到generic method定义中
protected bool DoListsContainAnyIdenticalRefernces<T>(
List<T> firstList,
List<T> secondList)
{
bool foundMatch = false;
foreach (T obj in firstList)
{
foreach (T thing in secondList)
{
if (obj.Equals(thing))
{
foundMatch = true;
}
}
}
return foundMatch;
}
注意:您可以在方法中使用T
而不是Object
。
答案 1 :(得分:1)
您还可以使用Linq扩展方法Intersect
来获得相同的结果。
// to get a list of the matching results
var matchedResults = MyCollection.Intersect(MyOtherCollection);
或
// to see if there are any matched results
var matchesExist = MyCollection.Intersect(MyOtherCollection).Any();