Guía Completa de Tipos de Datos en C#: Valor, Referencia y Punteros
Las variables en C# se categorizan en tres tipos:
- Tipos por valor (Value types)
- Tipos por referencia (Reference types)
- Tipos puntero (Pointer types)
Tipos por Valor
Almacenan el dato directamente. Derivan de System.ValueType. Ejemplos: int, char, float. Al declarar int, el sistema reserva memoria para el valor.
Tabla de Tipos por Valor (C# 2010)
| Tipo | Representa | Rango | Valor Default |
|---|---|---|---|
| bool | Booleano | True/False | False |
| byte | Entero sin signo 8 bits | 0 a 255 | 0 |
| char | Carácter Unicode 16 bits | U+0000 a U+FFFF | '\0' |
| decimal | Decimal preciso 128 bits (28-29 dígitos) | (±7.9×10²⁸)/10⁰⁻²⁸ | 0.0M |
| double | Punto flotante 64 bits doble precisión | (±)5.0×10⁻³²⁴ a (±)1.7×10³⁰⁸ | 0.0D |
| float | Punto flotante 32 bits precisión simple | -3.4×10³⁸ a +3.4×10³⁸ | 0.0F |
| int | Entero con signo 32 bits | -2,147,483,648 a 2,147,483,647 | 0 |
| long | Entero con signo 64 bits | -9.22×10¹⁸ a 9.22×10¹⁸ | 0L |
| sbyte | Entero con signo 8 bits | -128 a 127 | 0 |
| short | Entero con signo 16 bits | -32,768 a 32,767 | 0 |
| uint | Entero sin signo 32 bits | 0 a 4,294,967,295 | 0 |
| ulong | Entero sin signo 64 bits | 0 a 1.84×10¹⁹ | 0 |
| ushort | Entero sin signo 16 bits | 0 a 65,535 | 0 |
Obtener Tamaño en Bytes
Método sizeof: sizeof(int) → 4 bytes.
Console.WriteLine("Size of int: {0}", sizeof(int));
Tipos por Referencia
No contienen el dato, sino una referencia (dirección de memoria). Múltiples variables pueden referenciar la misma ubicación; cambios se reflejan en todas.
Tipos integrados: object, dynamic, string.
Tipo Object
Clase base última para todos los tipos (CTS). Alias de System.Object. Puede asignar cualquier valor (requiere conversión).
- Boxing: tipo valor → object.
- Unboxing: object → tipo valor.
object obj; obj = 100; // boxing
Tipo Dynamic
Almacena cualquier tipo. Comprobación de tipos en tiempo de ejecución (no compilación).
dynamic= value;
dynamic d = 20;
Similar a object pero object verifica en compilación, dynamic en ejecución.
Tipo String
Alias de System.String. Deriva de object. Literales: comillas "..." o verbatim @"...".
String str = "Tutorials Point"; String str2 = @"Tutorials Point";
Tipos referencia definidos por usuario: class, interface, delegate (se tratan después).
Tipos Puntero
Almacenan dirección de memoria de otro tipo. Capacidades como C/C++.
type* identifier;
char* cptr; int* iptr;
Se tratan en capítulo Unsafe Codes.
Lenguaje C
- Cuatro Tipos Clave de Accionamiento Ranurado para Sujetadores Explicados
- Termopares Explicados: Tipos, Rangos y Comparativa de Rendimiento
- Domine variables y tipos de datos primitivos en C#: Guía completa
- Dominando la Conversión de Tipos en C#: Implícita, Explícita, Parse y Métodos Convert
- Entendiendo los Tipos de Datos en C++: Fundamentos, Modificadores y Mejores Prácticas
- Tipos de datos en C explicados: int, float, char y más – guía completa
- Dominando el tipo de dato char en C++: Declaración, ASCII y técnicas de conversión
- Dominando tipos de datos en Python: Guía práctica
- Dominando conversión y casting de tipos en Python: Guía completa
- Tipos de Datos Primitivos en Java: Guía Completa con Ejemplos
- Dominando el Casting de Tipos en Java: Desde Ensanchamiento hasta Estrechamiento y Más Allá