Este artigo apresenta uma revisão dos conceitos sobre tipos primitivos e tipos por valor na linguagem C#. |
Você sabia que na especificação da linguagem C# não existe a definição de tipos primitivos ?
Ah ! Como assim ?
Isso
mesmo...
Os tipos primitivos não são definidos na especificação de
linguagem C#, eles são definidos na plataforma .NET (na CLR).
Os tipos primitivos definidos na CLI Esp são :
Para saber se um tipo de dados é primitivo utilize a propriedade : Type.IsPrimitive
Se retornar o valor true então o tipo é um dos tipos primitivos, caso contrário não é um tipo primitivo definido na CLR.
Mas tipos primitivos não são a mesma coisa que tipos por valor ?
Não.
Os tipos por valor podem ou não ser primitivos.
Existem muitos tipos por valor na plataforma .NET além daqueles definidos na CLI Esp.
Por exemplo, o tipo DateTime que é um struct fornecida pela plataforma .NET, e , que pode ser considerado um tipo por valor.
Os tipos por valor
Os tipos por valor são definidos nas seguintes categorias:
Structs
Enumerations
Numeric Types
integral types
floating-point types
decimal
bool
User defined structs
As principais características dos tipos por valor são:
As variáveis que são baseadas em tipos por valor contêm valores e atribuir uma variável de por valor a outra, copia o valor contido. Isso difere da atribuição de variáveis de tipo de referência, que copia uma referência para o objeto, mas não para o próprio objeto;
Todos os tipos de valor são derivados implicitamente de System.ValueType;
Você não pode derivar um novo tipo de um tipo por valor. No entanto, como tipos por referência, estruturas podem implementar interfaces;
Ao contrário dos tipos de referência, um tipo por valor não pode conter o valor null. No entanto, usar o recurso dos tipos anuláveis (Nullable Types) permite que tipos por valor sejam atribuídos a null.
Cada tipo por valor tem um construtor implícito padrão que inicializa o valor padrão desse tipo.
A tabela abaixo mostra o valor padrão quando da inicilização do tipo:
Tipo por valor | Valor Padrão |
---|---|
bool | false |
byte | 0 |
char | '\0' |
decimal | 0.0M |
double | 0.0D |
enum | O valor produzido pela expressão (E)0, onde E é o identificador enum. |
float | 0.0F |
int | 0 |
long | 0L |
sbyte | 0 |
short | 0 |
struct |
O valor produzido ao definir
todos os campos de tipo de valor para seus valores padrão e todos os campos de tipo de referência para nulo. |
uint | 0 |
ulong | 0 |
ushort | 0 |
Todos os tipos simples - os integrantes da linguagem C # - são aliases dos tipos do .NET Framework. Por exemplo, int é um alias de System.Int32. (Toda vez que você escreve int, o compilador traduz o código para para o tipo System.Int32 )
Nota: Existem
outros aliases. Veja a lista completa:
|
Expressões constantes, cujos operandos são todas constantes de tipo simples, são avaliadas em tempo de compilação.
Os tipos simples podem ser inicializados usando literais.
Por exemplo, 'A' é um literal do tipo char e 2001 é um literal do tipo int.
E estamos conversados...
(Disse Jesus) : Passará o céu e a terra, mas as minhas palavras não hão de passar. Lucas 21:33
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
https://msdn.microsoft.com/en-us/library/system.type.isprimitive.aspx
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf