delegate bool CheckList(int lowIndex, List<int> list);
public BO2()
{
InitializeComponent();
}
private void BO2_Load(object sender, EventArgs e)
{
List<int> randList = new List<int>() { 3, 4, 5, 6, 7, 8, 9, 10 };
CheckList HasDuplicate = (int lowIndex, List<int> list) =>
{
Predicate<int> criteria = x => x == lowIndex;
int topIndex = list.FindIndex(criteria);
List<int> duplicateList = new List<int>(list);
for (int i = topIndex; i < (list.Count - topIndex); i++)
{
if (list[i] == duplicateList[i])
{
return true;
}
}
return false;
};
MessageBox.Show("Has copy: " + HasDuplicate.Invoke(5, randList));
我尝试制作代理功能,以查看列表是否有两个等效值。如果有,则该函数将返回true,否则返回false。我在8分钟内编写了该功能仅用于测试目的,因为这种方法在某些情况下对我有用,这就是容易出错的原因:&#39; D
问题:该函数总是返回true,如果 randList 中有7对,则结果始终相同,为true。
注意:如果您想知道lowIndex
的含义是什么,它会指定从列表开始搜索的索引。示例:lowIndex = 5
,该函数将在列表中找到5的索引,并在该点之后开始搜索重复项。 :)
我不知道为什么每次都会返回真实,我不想要一个解决方法,无论是答案还是答案。解决方法或只回答。
问候,TuukkaX。
答案 0 :(得分:1)
您正在使用duplicatedList
初始化list
。这意味着它们将具有相同的元素,因此list[i] == duplicateList[i]
始终为真
答案 1 :(得分:0)
以下是我为解决问题所做的代码,如果有人需要它,因为我之前没有提供它。
delegate bool CheckList(int lowIndex, List<int> list);
CheckList HasDuplicate = (List<dynamic> list, int item) =>
{
if (list.Contains(item))
{
list.Remove(item);
return list.Contains(item) ? true : false;
}
return false;
};
类型基本上可以是任何类型,例如动态。