Oi Pessoal,
As vezes quando estamos desenvolvendo nossas aplicações, não nos preocupamos em estudar a fundo os tipos de dados que iremos utilizar em nossas variaveis, isso pode acontecer por falta de tempo ou mesmo de conhecimento do que esta pesquisa pode nos ajudar.
No .Net, possuimos dois tipos de tipos de variáveis: Value Types e Reference Types.
Value Types
As Value Types são os tipos mais simples utilizados no .Net e são armazenados no stack, lá o runtime pode facilmente e rapidamente criar, editar, ler ou excluir sem que haja um grande processamento.
Os tipos mais comuns de Value Types são: sbyte, byte, int ou Integer, uint ou UInteger, long, single ou float e decimal.
Reference Types
Já as Reference Types são tipos um pouco mais... não queria dizer complexo, mas um pouco mais difícil de processar do que os Value Types. Porque estes tipos são armazenados no heap, que é uma área da memória que possui referências aos dados atuais das variaveis que utilizamos. Com isto, o .Net precisa de um procedimento que fica de tempos em tempos verificando se os valores estão ou não mais sendo utilizados. Este procedimento é chamado de Garbage Colletor ou Coletor de Lixo.
Na prática
Um outro ponto interessante é que quando utilizamos estruturas (structs) do tipo Value Types e utilizamos uma outra estrutura que copia esta, os valores destas estruturas são indepentes e não sofrem alterações quando modificamos o valor de uma delas. Por exemplo:
Imaginemos que temos uma estrutura chamada Numeros, que possui variaveis para incrementarmos os valores. Então, criamos duas variaveis onde a primeira é inicializada com zero e a segunda é a cópia da primeira. Depois, alteramos os valores de cada uma das estruturas e vemos que eles serão independentes, veja:
Mas e se no lugar de struct, usarmos class, que é uma Reference Type? Se você fizer o teste, vai notar que o valor de n1 foi substituido por 3 e o n2 também é 3, por que? Porque uma Reference Type irá modificar os valores de todas as variaveis que são referencia dela, e como a n2 é uma referencia de n1, pois estamos igualando, quando incrementamos o valor de n2, o valor de n1 também se altera.
Viu como é importante sabermos diferenciar os tipos?
Bom pessoal, por hoje é só.
Até a próxima.
![]() |
CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010 |