A と B という2 つのqueueがあり、次のアルゴリズムを実行します。
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;
}
}
これはもっと簡潔に書くことができると何かが教えてくれます。Dequeue() は Peek() と同じ要素を返すため、Peek() と Dequeue() を 1 つの操作で組み合わせることができ、if ステートメントを while ステートメントと融合して、明示的な中断を回避することができます。同じ動作を正確に維持する方法がわかりません。つまり、「if」の条件を満たさない限り、要素を削除したくありません。