Pergunta

Quero traduzir todos os pontos em um List<T>.Isso funciona:

for (int i = 0; i <PolygonBase.Count; ++i) 
{
    PolygonBase[i] = PolygonBase[i] + MousePos;
}

Mas usando List<T>.ForEach não:

PolygonBase.ForEach(v => v += MousePos);

Ideias?

Foi útil?

Solução

O código atual é simplesmente re-atribuir a variável local v para um novo valor, não se refere de volta para o valor original na lista.É o equivalente a escrever:

foreach(int v in PolygonBase)
{
    v += MousePos;
}

Escrever de volta para o valor original, use ConvertAll:

PolygonBase.ConvertAll(v => v += MousePos);

Outras dicas

ForEach não é mutável, ele não altera a estrutura de dados de qualquer forma.Confira essa ameaça.Usando o condicional lambda instruções com um foreach Ação em uma lista

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top