Внутренний l oop может быть значительно упрощен, в C# это должно быть довольно просто:
Так что для внутреннего l oop мы можем сделать то же самое в C#:
for (int it = 0; it < triangles.Count;)
{
if (triangles[t] == i || triangles[t+1] == i || triangles[t+2] == i)
{
triangles.RemoveRange(it, 3);
}
else
{
it += 3;
t += 3;
}
}
Обратите внимание, что в for
l oop нет члена приращения, это учтено в операторе else
. Здесь мы можем удалить элементы из списка, потому что .Count
всегда будет оцениваться на каждой итерации. Мы не изменяем список, для которого мы выполняем итерацию, потому что нет активного итератора (это было бы иначе, если бы мы использовали foreach
l oop).
Таким образом, вы можете сделать то же самое для внешнего l oop, где он показывает vertices.erase(vertices.begin() + i);
, вы можете просто заменить его в C# на vertices.RemoveAt(i)
.