Desenvolvimento - C#

Usando Tipos Valor: Fundamentos do .NET - Certificação 70-536

Veja neste artigo alguns conceitos base sobre os chamados “tipos valor” (em C# e VB.Net) do .NET Framework. Este assunto é abordado na prova para a certificação 70-536.

por Joel Rodrigues



Veja neste artigo alguns conceitos base sobre os chamados “tipos valor” do .NET Framework. Este assunto é abordado na prova para a certificação 70-536.

Os tipos de variáveis podem ser divididos em duas categorias: “tipos valor” e “tipos referência”(estes últimos serão abordados posteriormente em um próximo artigo). Os tipos valor são armazenados em um local da memória chamado Stack. Quando criamos ou passamos um valor para uma variável desse tipo, uma nova cópia é criada nessa região da memória e a antiga é descartada até que o Garbage Collector se encarregue de destruí-la e liberar a memória.

Os tipos mais básicos do .NET são tipos valor, como o int e o bool e, por serem normalmente os mais utilzados, ganharam “aliases” ou apelidos para que possam ser referenciados mais facilmente. A seguir temos uma tabela com alguns desses tipos, o espaço que ocupam na memória, seu “apelido” em C# e VB.NET e quando utilizá-los:

Tipo (apelido em C#/VB) Espaço que ocupa (em bytes) Quando/como utilizar Faixa de valores que suporta
System.SByte (sbyte/SByte) 1 Valores de até um byte com sinal 128 a 127
System.Byte (byte/Byte) 1 Valores de até um byte sem sinal 0 a 255
System.Int16 (Short/short) 2 Interação com outros sistemas de outras plataformas -32768 a 32767
System.Int32 (Integer/int) 4 Contadores e outros valores inteiros -2147483648 a 2147483647
System.UInt32 4 Números inteiros positivos e contadores 0 a 4294967295
(UInteger/uint)
System.Int64 8 Números inteiros grandes -9223372036854775808 a
(Long/long) 9,22337203685477E18
System.Single 4 Números decimais -3.402823E+38 a 3.402823E+38
(Single/float)
System.Double 8 Números decimais maiores e de maior precisão -1.79769313486232E+308 a
(Double/double) 1.79769313486232E+308
System.Decimal 16 Valores financeiros, científicos e que precisam de grande precisão -79228162514264337593543950335
(Decimal/decimal) to
7,92281625142643E28
System.Char 2 Um único caractere Unicode
(char/char)
System.Boolean 1 Valores Verdadeiro ou Falso
System.IntPtr Depende da plataforma Ponteiro para uma posição na memória
System.DateTime 8 Datas e horas 1/1/0001 12:00:00 a 31/12/9999 23:59:59

Observação 1: existem mais de 300 tipos valor no .NET, mas estes são os principais

Observação 2: em tempo de execução, o uso do Int32 é otimizado, logo, é indicado que se use esse tipo para contadores e variáveis que são frequentemente acessadas. Já para valores decimais, o mais eficiente é o double, pois seu uso é otimizado pelo hardware.

Apesar de serem tipos valor e não classes propriamente ditas, é possível chamar métodos a partir desses tipos de variáveis, por exemplo, o ToString() que é herdado do tipo System.Object, do qual descendem os demais tipos do .NET.

Para declarar uma variável desse tipo, escrevemos o tipo seguido do nome da variável. Para já inicializar o valor no momento da declaração, basta seguir o nome de um sinal de igualdade e o valor logo em seguida.

Listagem 1:declarando variável de um tipo valor

//Visual Basic
Dim b As Boolean = false
//C#
Bool b = false;

Por padrão, esses tipos não aceitam valores nulos. Para permitir que uma variável desse tipo aceite valores nulos, é necessário torna-la “nullable”, isso pode ser feito conforme mostra a Listagem 2.

Listagem 2:Declarando variáveis nullable

//Visual Basic
Dim b As Nullable(Of Boolean) = Nothing
//C#
Nullable<Boolean> b = null;
//ou, apenas no C#, pode-se usar uma forma “abreviada”:
bool? B = null;

Quando declaramos variáveis dessa forma, elas passam a ter duas novas propriedades: HasValue que indica se há um valor na variável ou se ela está nula e Value que representa o real valor (do tipo original).

Bom, esta foi uma breve introdução sobre “tipos valor” do .NET Framework.

Este assunto está presente no capítulo 1, lição 1 do kit de treinamento para a certificação 70-536.

Por enquanto é só. Ponho-me à disposição para sanar qualquer dúvida que venha a surgir a respeito do artigo.

Um abraço a todos e até a próxima.

Joel Rodrigues

Joel Rodrigues - Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há quase 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (JQuery).