Matriz de cópias C # por valor

Eu tenho uma matriz tipificadaMyType[] types; e eu quero fazer uma cópia independente dessa matriz. eu tentei isso

MyType[] types2 = new MyType[types.Length] ;

types2 = types ;

mas isso cria uma referência para o primeiro. Eu então tentei

Array.Copy( types , types2 , types.Length ) ;

mas tenho o mesmo problema: alterar um valor no primeiro array também altera o valor na cópia.

Como posso fazer uma cópia completamente independente ou profunda de um Array, IList ou IEnumerable?

questionAnswers(7)

yourAnswerToTheQuestion