Fundamentos do Framework 2.0 utilizando C#
Fundamentos do Framework
Esse é o primeiro artigo de uma serie que irá falar sobre fundamento do .NET Framework 2.0 utilizando C#.
O objetivo é falar de alguns pontos importantes do framework para quem está começando com .NET 2.0
Grande parte do conteúdo foi baseado no livro Microsoft .NET FRAMEWORK 2.0 Application Development Foundation que serve de guia para prova 70-536 da Microsoft.
Vamos começar essa serie falando sobre algo muito básico. Os tipos por Valor e por Referencia.
Tipos por valor guardam diretamente os dados, enquanto tipos por referencia são apenas apontadores para alguma área de memória.
Os tipos por valor são guardados numa área de memória chamada stack(pilha), onde o runtime pode criar, ler, atualizar e deletar rapidamente, com o mínimo de sobrecarga.
Quando você copia um tipo por valor os dados da variável são copiados em outro ponto da pilha. Ficando assim armazenados em dois locais diferentes na pilha, se você altera um deles, o outro continua com o mesmo valor.
A vantagem mais obvia de se usar tipos por valor é a performance. Mais tarde discutiremos os ganhos com tipos por valor.
Existem 3 categorias básicas de tipos por valor
- Built-in
- User-Defined
- Enumeration
Built-in, são tipos fornecidos pelo .NET Framework. Todos os tipos numéricos básicos inclusos no .NET Framework, são tipos por valor.
Exemplos:
- sbyte
- byte
- short
- int
- uint
- long
- float
- double
*Nota do Livro*
Segundo os autores o runtime otimiza a performance dos inteiros de 32 bits ou seja, o int (System.Int32).
Para operações de ponto flutuante o recomendado seria double(System.Double), pois suas operações são otimizadas pelo hardware.
Alguns tipos não numéricos também são tipos por valor.
Exemplos:char (System.Char) bool(System.Boolean) date(System.DateTime)
Esses são os tipos mais comuns, porem existem outros tipos por valor que são fornecidos pelo framework.
Tipos por valor Built-in possuem construtores implícitos, por isso não há necessidade de se declarar com a palavra “new” como é feito com classes normais.
*Lembrando que todos as classes herdam de System.Object.*
Exemplos de inicialização em variáveis por valor.
int x; bool k = false;
double y = 10.2;
No .NET FRAMEWORK 2.0, temos um novo tipo por valor, o Nullable.
Esse tipo pode assumir 3 valores (true, false, null).
Pode ser aplicado em uma rotina onde os valores possíveis são true e false, mas que se deseja ter um controle sobre o campo.
Exemplo, se o usuário preencheu o campo então a variável receberá true ou false de acordo com o escolhido pelo usuário, mas se o usuário não preencheu o campo, então o valor fica null.
Existem também outras possibilidades para o uso do Nullable
Um exemplo de declaração:
Nullable<bool> b = null;
Em um futuro artigo iremos falar sobre essa sintaxe de declaração do Nullable, abordando Generics.
Por hoje ficaremos por aqui para que o post não fique muito extenso.
No proximo post continuaremos falando sobre tipos por valor e em seguida entraremos em tipos por referencia.
Espero que tenha ajudado a quem está começando com .NET e C#