terça-feira, 31 de março de 2009

Value Type x Reference Type and Methods

Nós sempre estudamos isso e com o passar do tempo caí um pouco no esquecimento.
Definições

Value Types
Possuem seus valores armazenado diretamente nas variáveis (na pilha).

Reference types
Possuem apenas o endereço na pilha, que aponta para o valor armazenado no "Heap".

Ou seja quando criamos um objeto para o compilador estamos fazendo:

Métodos

Em C# e Java todo parâmetro é passado por valor. Assim se passarmos um "value type" estaremos passando uma cópia dele. E se passarmos um objeto estamos passando uma cópia da variável que armazena apenas o endereço para o objeto.

Isso justifica as seguintes informações:
  • "Reference variable to another instance merely creates a second copy of the reference"
  • "Reference types provide a great deal of flexibility, and they offer excellent performance when passing them to methods."

?ref?
E quanto ao método methodHowDo(ref Animal){...}, ele passa o ponteiro por referência e não uma cópia dela.

Té+

0 comentários:

Postar um comentário