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

Valores e referências

  • 1.
    Linguagem de programação4 Daniel de Sena Araújo Escola Técnica CEPEP
  • 2.
    Agenda • Tipo valor; •Tipo referência; • ref; • out; • object; • box; • unbox.
  • 3.
    Tipos valor • Tiposde 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.
  • 4.
    Tipos referência • Tiposde 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.
  • 5.
    Parâmetros ref eout • 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.
  • 6.
    Parâmetros ref eout static void Inc(int p) { p++; } static void Main() { int i = 42; Inc(i); Console.WriteLine(i); }
  • 7.
    ref • Usando apalavra 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.
  • 8.
    Parâmetros ref static voidInc(ref int p) { p++; } static void Main() { int i = 42; Inc(ref i); Console.WriteLine(i); }
  • 9.
    out • A palavrachave 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.
  • 10.
    Parâmetros out static voidInc(ref int p) { p++; } static void Main() { int i = 42; Inc(ref i); Console.WriteLine(i); }
  • 11.
    Classe System.Object • Umdos 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.
  • 12.
    Box • Box: Cópiaautomática de um valor armazenado na pilha para o heap; • Exemplo: int i = 10; object o = i;
  • 13.
    Unbox • Unbox: Extraçãodo valor armazenado no heap para a pilha; • Exemplo: object o = 10; int i = (int)o;
  • 14.
  • 15.