0

我正在尝试编写一种方法,该方法采用任何类型的列表并比较那里的项目。这是我到目前为止所拥有的,但它没有编译。

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”存在错误。

4

2 回答 2

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();
于 2012-06-29T03:52:03.663 回答
1

如果您不在泛型类中,则需要将泛型参数添加T泛型方法定义中

  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.

于 2012-06-29T03:50:38.900 回答