Descobrir tipos de valor e tipos de referência
- 8 minutos
Com muitos tipos de dados disponíveis em C#, escolher o certo para usar significa que você precisa entender quando pode escolher um tipo de dados em vez de outro.
Antes de discutir por que você pode escolher um tipo de dados em vez de outro, você precisa entender mais sobre os tipos de dados. Você também precisa saber como os dados e os tipos de dados funcionam em C# e .NET.
O que são dados?
Responder à pergunta "o que são dados" depende de quem você pergunta e em que contexto você está perguntando.
No desenvolvimento de software, os dados são essencialmente um valor que é armazenado na memória do computador como uma série de bits. Um bit é um simples interruptor binário representado como um 0 ou 1, ou melhor, "off" e "on". Um único bit não parece útil, no entanto, quando você combina 8 bits juntos em uma sequência, eles formam um byte. Quando usado em um byte, cada bit assume um significado na sequência. Na verdade, você pode representar 256 combinações diferentes com apenas 8 bits se usar um sistema numérico binário (base-2).
Por exemplo, em um sistema de numeração binária, você pode representar o número 195 como 11000011. A tabela a seguir ajuda você a visualizar como isso funciona. A primeira linha tem oito colunas que correspondem a uma posição em um byte. Cada posição representa um valor numérico diferente. A segunda linha pode armazenar o valor de um bit individual, ou 01.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
Se você adicionar o número de cada coluna na primeira linha que corresponde a um 1 na segunda linha, obterá o equivalente decimal à representação do sistema numérico binário. Neste caso, seria 128 + 64 + 2 + 1 = 195.
Para trabalhar com valores maiores além do 255, seu computador armazena mais bytes (geralmente 32 bits ou 64 bits). Se você estiver trabalhando com milhões de grandes números em um ambiente científico, talvez seja necessário considerar com mais cuidado quais tipos de dados está usando. Seu código pode exigir mais memória para ser executado.
E os dados textuais?
Se um computador só entende 0e 1s, então como ele permite que você trabalhe com texto? Usando um sistema como ASCII (American Standard Code for Information Interchange), você pode usar um único byte para representar letras maiúsculas e minúsculas, números, tabulação, backspace, nova linha e muitos símbolos matemáticos.
Por exemplo, se você quisesse armazenar uma letra a minúscula como um valor no meu aplicativo, o computador só entenderia a forma binária desse valor. Para entender melhor como uma letra a minúscula é manipulada pelo computador, preciso localizar uma tabela ASCII que forneça valores ASCII e seus equivalentes decimais. Você pode pesquisar os termos "ASCII lookup decimal" para localizar esse recurso on-line.
Neste caso, a letra a minúscula é equivalente ao valor 97decimal. Em seguida, você usaria o mesmo sistema de numeração binária no sentido inverso para encontrar como uma letra a ASCII é armazenada pelo computador.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
Desde 64 + 32 + 1 = 97, o código ASCII binário de 8 bits para a é 01100001.
É provável que você nunca precise realizar esses tipos de conversões por conta própria, mas entender a perspetiva de dados do computador é um conceito fundamental, especialmente quando você está considerando tipos de dados.
O que é um tipo de dados?
Um tipo de dados é uma maneira pela qual uma linguagem de programação define a quantidade de memória a ser salva para um valor. Há muitos tipos de dados na linguagem C# para serem usados para muitos aplicativos e tamanhos de dados diferentes.
Para a maioria dos aplicativos que você cria em sua carreira, você se contentará com um pequeno subconjunto de todos os tipos de dados disponíveis. No entanto, ainda é vital saber que outros existem e por quê.
Valor vs. tipos de referência
Este módulo se concentra nos dois tipos de tipos em C#: tipos de referência e tipos de valor.
As variáveis dos tipos de referência armazenam referências aos seus dados (objetos), ou seja, apontam para valores de dados armazenados em outro lugar. Em comparação, as variáveis dos tipos de valor contêm diretamente seus dados. À medida que você aprende mais sobre C#, novos detalhes surgem relacionados à diferença fundamental entre valores e tipos de referência.
Tipos de valor simples
Tipos de valor simples são um conjunto de tipos predefinidos fornecidos por C# como palavras-chave. Essas palavras-chave são aliases (um apelido) para tipos predefinidos definidos na Biblioteca de Classes do .NET. Por exemplo, a palavra-chave int C# é um alias de um tipo de valor definido na Biblioteca de Classes do .NET como System.Int32.
Os tipos de valor simples incluem muitos dos tipos de dados que você já pode ter usado, como char e bool. Há também muitos tipos de valores integrais e de vírgula flutuante para representar uma ampla gama de números inteiros e fracionários.
Recapitulação
- Os valores são armazenados como bits, que são simples interruptores on / off. A combinação suficiente desses switches permite que você armazene praticamente qualquer valor possível.
- Existem duas categorias básicas de tipos de dados: tipos de valor e de referência. A diferença está em como e onde os valores são armazenados pelo computador à medida que o programa é executado.
- Tipos de valor simples usam um alias de palavra-chave para representar nomes formais de tipos na Biblioteca .NET.