Definição – o que significa Shallow Copy?
Cópia superficial, em C #, é o processo de criação de um clone de um objeto instanciando uma nova instância do mesmo tipo do objeto original e copiando os membros não estáticos do objeto existente para o clone. Os membros do tipo de valor são copiados bit a bit enquanto os membros do tipo de referência são copiados de forma que o objeto referido e seu clone se refiram ao mesmo objeto.
Em geral, a cópia superficial é usada quando o desempenho é um dos requisitos junto com a condição de que o objeto não sofrerá mutação em todo o aplicativo. Ao passar o clone contendo dados imutáveis, a possibilidade de corrupção por qualquer código é eliminada. A cópia superficial é considerada eficiente onde as referências de objeto permitem que os objetos sejam transmitidos pelo endereço de memória, de forma que o objeto inteiro não precise ser copiado.
A cópia superficial também é conhecida como cópia membro-a-membro.
Definirtec explica Shallow Copy
A cópia superficial é semelhante à cópia profunda na atribuição de cada membro de um objeto ao de outro objeto, mas difere na maneira como o campo do tipo de referência é copiado. Ao contrário da cópia rasa onde a referência é apenas copiada, na cópia profunda é criada uma nova cópia do objeto referido.
Por exemplo, considere um objeto funcionário que contém detalhes de informações pessoais, incluindo uma lista de objetos de endereço que armazenam vários endereços de funcionários. Executando uma cópia superficial de um objeto funcionário, um clone do objeto funcionário pode ser criado com referências à mesma lista de objetos de endereço que pertencem ao objeto funcionário original.
Os métodos para realizar uma cópia superficial incluem:
- Chame o método MemberwiseClone do objeto
- Crie um clone manualmente por meio de um método personalizado que é entediante, mas fácil de controlar
- Use uma técnica de reflexão que forneça facilidade automatizada para realizar cópia superficial, mas com sobrecarga de desempenho
- Use um método de serialização mais lento do que a reflexão, mas automatizado e simples
A cópia superficial não pode ser usada onde o objeto tem membros do tipo de referência que são modificados com frequência. Esta definição foi escrita no contexto de C #