我有两个队列,比如说 A 和 B,我在它们上执行以下算法:
while (queueA.Count > 0)
{
var elemA = queueA.Peek();
var elemB = queueB.Peek();
if (AreSimilar(elemA, elemB))
{
Debug.Assert(elemA.SomeProperty == elemB.SomeProperty);
queueA.Dequeue();
queueB.Dequeue();
}
else
{
break;
}
}
有人告诉我这可以写得更简洁;Peek() 和 Dequeue() 可以组合在一个操作中,因为 Dequeue() 返回与 Peek() 相同的元素,并且 if 语句可能与 while 语句融合,避免显式中断。我只是没有看到如何准确地保留相同的行为,即我不想删除一个元素,除非它满足“if”中的条件。