Во время отражения с помощью ILSpy я нашел эту строку кода в Queue<T>.Enqueue(T item)
-методе:
if (this._size == this._array.Length)
{
int num = (int)((long)this._array.Length * 200L / 100L);
if (num < this._array.Length + 4)
{
num = this._array.Length + 4;
}
this.SetCapacity(num);
}
Мне просто интересно, почему кто-то это сделает? Я думаю, что это какая-то целая проверка переполнения, но зачем сначала умножать на 200L
, а затем делить на 100L
?
Возможно, это была проблема с более ранними компиляторами?