首先抱歉我的英文,希望你理解。 我有一个计时器来更新一个' object [] [] tempServices'每1 Sn并发送到下面的功能 我想要做的是将tempServices的元素添加到队列中,但只有一次(队列中没有相同的元素)。
myQ = new Queue<object[]>();
public void AddToQueue(object[][] tempServices)
{
bool checkQueue;
lock (myQ)
{
foreach (object[] tSer in tempServices)
{
checkQueue = false;
if (myQ.Count == 0)
myQ.Enqueue(tSer);
for (int i = 0; i < myQ.Count; i++)
{
cv = myQ.ToArray();
if (tSer == myQ.ElementAt(i))
{
checkQueue = false;
break;
}
else
checkQueue = true;
}
if (checkQueue)
myQ.Enqueue(tSer);
}
}
}
这段代码第一次正常工作,但其他时间仍然不断地从tempServices一次又一次地添加到队列中。相同元素的阁楼,我只想添加不同的元素 例如 (不要看示例类型)
tempServices ___ queue
1-2-3 _ _ _1-2-3
1-2-3-4_的 __ _1-2-3-4
2-4-6_的 _ _ _1-2-3-4-6
7_的 _ __ _ _1-2-3-4-6-7
此代码有什么问题? 感谢..
答案 0 :(得分:0)
您可以使用Queue<T>.Contains
方法检查某个项目是否已存在于队列中,如果项目类似,则返回“true”,否则返回“false”。这样可以自由选择是否将项目排入队列。请记住,此方法使用EqualityComparer<T>.Default
的默认相等比较器T
确定相等性,{{1}}是队列中值的类型。查看this链接以获取示例代码。