CSharp
Tutorial CSharp: Tipos de datos
CSharp tipos de datos: definición y ejemplos. Aprende a definir y usar tipos de datos en CSharp con ejemplos prácticos y detallados.
Aprende CSharp GRATIS y certifícateEn C#, un tipo de datos indica el tipo de valor que una variable puede almacenar. Los tipos de datos son fundamentales en la creación de un programa, ya que ayudan a modelar la información con la que el programa interactuará.
C# es un lenguaje de programación fuertemente tipado. Esto significa que cada variable y constante tiene un tipo, así como cada expresión que se evalúa tiene un tipo. Todos los tipos de asignación, ya sea por asignación o por inicialización, se comprueban para garantizar su compatibilidad.
En C#, los tipos de datos se dividen en tres categorías principales:
- Tipos de valor (Value types)
- Tipos de referencia (Reference types)
- Tipos puntero (Pointer types)
Además de estos, también existe el tipo void
, que se usa para denotar que un método no devuelve ningún valor.
Tipos en C#
Tipos de valor (Value types)
Cuando se asigna un nuevo valor a una variable de tipo de valor, se crea una copia física de ese valor, y cualquier modificación no afecta al dato original. C# proporciona varios tipos de valor predefinidos.
// Tipos de valor más utilizados
int i = 123; // Número entero
double d = 12.3; // Número de doble precisión (decimal)
bool b = true; // Booleano (true / false)
char c = 'a'; // Carácter
Otros tipos de valor básicos en C# incluyen:
// Números enteros, diferenciados por tamaño en memoria
byte valByte = 255; // 1 byte de memoria
short valShort = 32767; // 2 bytes de memoria
int valInt = 2147483647; // 4 bytes de memoria
long valLong = 9223372036854775807; // 8 bytes de memoria
// Números en coma flotante
float valFloat = 1.5F; // Precisión simple, 4 bytes de memoria
double valDouble = 1.5D; // Precisión doble, 8 bytes de memoria
// Número decimal
decimal valDecimal = 1.5M; // Mayor precisión y rango menor, 16 bytes de memoria
// Booleano (true / false)
bool valBool = true;
// Carácter unicode
char valChar = 'a';
Existen otros tipos de valor, como estructuras y enumeraciones. Todos estos tipos de datos se almacenan en la pila (stack) y la variable directamente contiene el valor.
Tipos de referencia (Reference types)
Los tipos de referencia no contienen el dato actual almacenado en una variable, sino que contienen una referencia a los datos. Es posible que múltiples variables puedan referirse a un mismo objeto de memoria único. Si el objeto de memoria se cambia por una de las variables, los cambios también serían visibles para las otras. Los tipos de referencia se almacenan en el heap. C# tiene varios tipos de referencia predefinidos como object, dynamic, y string.
object obj = "Hola mundo"; // Object
dynamic dyn = 20.5; // Dynamic
string str = "Hola mundo"; // Cadena de caracteres
Tipos puntero (Pointer types)
C# tiene la capacidad de utilizar punteros, pero sólo en un contexto "inseguro", no recomendado. En general, C# abstrae el manejo de la memoria para evitar los errores comunes que se producen cuando se utilizan punteros, como la corrupción de la memoria y las fugas de memoria. Sin embargo, en ciertos casos, es posible que se quiera utilizar punteros por razones de eficiencia.
unsafe // No recomendado
{
int var = 20;
int* p = &var;
Console.WriteLine("Data at the location pointed by p: {0}", *p);
}
Conversión de tipos
La conversión de tipos es el proceso de convertir un tipo de dato en otro. C# soporta dos tipos de conversión:
Conversión implícita: Estas conversiones se realizan por el compilador de C# sin necesidad de intervención del programador. Por ejemplo, es posible convertir un
int
along
ya que hay una garantía de que no habrá pérdida de datos. Esto se debe a que unlong
tiene mayor tamaño que unint
.int i = 100; long l = i; // Conversión implícita, no se requiere ningún operador de casting Console.WriteLine(l); // 100
Conversión explícita (casting): Estas conversiones se realizan por el programador. Son necesarias cuando podría haber una pérdida de datos durante la conversión, o cuando se están convirtiendo tipos de datos que son incompatibles por defecto. En caso de una conversión exitosa, el compilador no dará ningún error. Por ejemplo, sería necesario para convertir un
double
a unint
, debido a que se podría perder información decimal.double d = 123.4; int i = (int)d; // Casting explícito, necesario porque podría haber pérdida de datos Console.WriteLine(i); // 123, se perdió información
Es esencial entender y utilizar correctamente los tipos de datos en C# para asegurar la integridad de los datos y el correcto funcionamiento del programa.
Ejercicios de esta lección Tipos de datos
Evalúa tus conocimientos de esta lección Tipos de datos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Todas las lecciones de CSharp
Accede a todas las lecciones de CSharp y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A C#
Sintaxis
Creación De Proyecto C#
Sintaxis
Variables Y Constantes
Sintaxis
Tipos De Datos
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Clases Y Encapsulación
Programación Orientada A Objetos
Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Excepciones
Excepciones
Arrays Y Listas
Colecciones Y Linq
Diccionarios
Colecciones Y Linq
Conjuntos, Colas Y Pilas
Colecciones Y Linq
Uso De Consultas Linq
Colecciones Y Linq
Delegados
Programación Asíncrona
Eventos
Programación Asíncrona
Lambdas
Programación Asíncrona
Uso De Async Y Await
Programación Asíncrona
Tareas
Programación Asíncrona
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender las categorías principales de tipos de datos en C#: valor, referencia y puntero.
- Familiarizarse con los tipos de datos más utilizados en C#, como
int
,double
,bool
,char
, etc. - Entender cómo se almacenan los tipos de valor en la pila y los tipos de referencia en el heap.
- Aprender sobre las conversiones de tipos en C#: implícitas y explícitas (casting).
- Conocer los conceptos básicos de los punteros en C# y sus implicaciones.