Copiando Arrays no C#
Trabalhando em um programa para cálculo de métodos numéricos, deparei-me com um problema interessante. O código tem dois Arrays, vetorInicial e vetorCopiado. O vetorInicial já tinha valores, e eu precisava copiar para o vetorCopiado, que estava sendo criado naquele momento. Naturalmente, fiz o seguinte:
Double [] vetorCopiado = vetorInicial;
Grande foi a minha surpresa ao saber que ao modificar o vetorInicial depois da cópia também alteraria os valor de vetorCopiado. Depois de algum tempo de pesquisas, encontrei a solução:
Double [] vetorCopiado = new Double[vetorInicial.GetLenght(0)]; Array.Copy(vetorInicial, vetorCopiado, 0);
O método Copy da classe Array copia os valores ao invés da referência, como mostrado no primeiro código. Esse método tem overloads que podem ajudar em casos específicos, então vale a pena conferir.
Ps: Também é possível copiar matrizes ( Type[,] ), basta passar como parâmetro de quantidade de itens a ser copiados o número de elementos da matriz (m*n).

