Valores e referências

Preview:

Citation preview

Linguagem de programação 4

Daniel de Sena Araújo

Escola Técnica CEPEP

Agenda

• Tipo valor;

• Tipo referência;

• ref;

• out;

• object;

• box;

• unbox.

Tipos valor

• Tipos de dados primitivos;

• No momento da declaração da variável, um espaço suficiente para armazenar aquele tipo de dado é alocado na memória;

• No momento da atribuição de valor a variável, o valor é copiado para esse espaço na memória.

Tipos referência

• Tipos de classe;

• No momento da declaração de um objeto, o compilador aloca uma pequena porção da memória suficiente para armazenar um endereço de memória;

• No momento da criação do objeto, um espaço na memória é alocado para ele, e o endereço desse espaço é gravado na primeira porção de memória alocada.

Parâmetros ref e out

• Quando você passa um argumento por parâmetro para um método, independente do tipo (valor ou referência), o parâmetro é iniciado com uma cópia do argumento.

Parâmetros ref e out

static void Inc(int p){p++;

}static void Main(){int i = 42;Inc(i);Console.WriteLine(i);

}

ref

• Usando a palavra ref como prefixo de um parâmetro, o parâmetro torna-se uma referência ao argumento real em vez de uma cópia do argumento.

Parâmetros ref

static void Inc(ref int p){p++;

}static void Main(){int i = 42;Inc(ref i);Console.WriteLine(i);

}

out

• A palavra chave out é uma abreviação de output (saída). Quando você passa um parâmetro out para um método, o método tem que atribuir um valor a ele.

Parâmetros out

static void Inc(ref int p){p++;

}static void Main(){int i = 42;Inc(ref i);Console.WriteLine(i);

}

Classe System.Object

• Um dos tipos referência mais importantes do .NET Framework;

• Todas as classes herdam da System.Object;

• É possível criar uma variável do tipo Object e usar para referenciar qualquer tipo de objeto;

• Para criar uma variável do tipo System.Object, podemos utilizar a palavra reservada object.

Box

• Box: Cópia automática de um valor armazenado na pilha para o heap;

• Exemplo:

int i = 10;

object o = i;

Unbox

• Unbox: Extração do valor armazenado no heap para a pilha;

• Exemplo:

object o = 10;

int i = (int)o;

• Email: danieldesenaaraujo@gmail.com

• GitHub: https://github.com/danieldesenaaraujo

• SlideShare: http://pt.slideshare.net/danieldesenaaraujo

Fim

Recommended