Domine variables y tipos de datos primitivos en C#: Guía completa
Variables y tipos de datos (primitivos) en C#
En este tutorial, aprenderemos sobre variables, cómo crear variables en C# y los diferentes tipos de datos que soporta el lenguaje de programación C#.
Una variable es un nombre simbólico dado a una ubicación de memoria. Las variables se usan para almacenar datos en un programa de computadora.
¿Cómo declarar variables en C#?
Aquí hay un ejemplo para declarar una variable en C#.
int edad;
En este ejemplo, una variable edad de tipo int (entero) se declara y solo puede almacenar valores enteros.
Podemos asignar un valor a la variable más adelante en nuestro programa así:
int edad; ... ... ... edad = 24;
Sin embargo, la variable también puede inicializarse con algún valor durante la declaración. Por ejemplo,
int edad = 24;
Aquí, una variable edad de tipo int se declara e inicializa a 24 al mismo tiempo.
Dado que es una variable, también podemos cambiar el valor de las variables. Por ejemplo,
int edad = 24; edad = 35;
Aquí, el valor de edad se cambia a 35 desde 24.
Las variables en C# deben declararse antes de poder usarse. Esto significa que el nombre y tipo de variable deben conocerse antes de que se les pueda asignar un valor. Por esto C# se llama un lenguaje de tipado estático.
Una vez declarada, el tipo de dato de una variable no puede cambiarse dentro de un ámbito. Un ámbito puede pensarse como un bloque de código donde la variable es visible o disponible para usar. Si no entiende la afirmación anterior, no se preocupe, aprenderemos sobre ámbitos en capítulos posteriores.
Por ahora recuerde, no podemos hacer lo siguiente en C#:
int edad; edad = 24; ... ... ... float edad;
Variables tipadas implícitamente
Alternativamente en C#, podemos declarar una variable sin conocer su tipo usando la palabra clave var. Tales variables se llaman variables locales de tipado implícito.
Las variables declaradas usando la palabra clave var deben inicializarse en el momento de la declaración.
var valor = 5;
El compilador determina el tipo de variable a partir del valor que se le asigna. En el ejemplo anterior, valor es de tipo int. Esto es equivalente a:
int valor; valor = 5;
Puede aprender más sobre variables locales de tipado implícito.
Reglas para nombrar variables en C#
Hay ciertas reglas que debemos seguir al nombrar una variable. Las reglas para nombrar una variable en C# son:
- El nombre de la variable puede contener letras (mayúsculas y minúsculas), guion bajo (_) y dígitos solamente.
- El nombre de la variable debe comenzar con una letra, guion bajo o símbolo @. Por ejemplo,
Reglas para nombrar variables en C# Nombres de Variable Observaciones nombre Válido asignatura101 Válido _edad Válido (Mejor práctica para nombrar variables miembro privadas) @break Válido (Usado si el nombre es una palabra clave reservada) 101asignatura Inválido (Comienza con dígito) tu_nombre Válido tu nombre Inválido (Contiene espacio en blanco) - C# distingue mayúsculas/minúsculas. Significa que edad y Edad se refieren a 2 variables diferentes.
- Un nombre de variable no debe ser una palabra clave de C#. Por ejemplo,
if,for,usingno pueden ser un nombre de variable. Discutiremos más sobre palabras clave de C# en el próximo tutorial.
Mejores prácticas para nombrar una variable
- Elija un nombre de variable que tenga sentido. Por ejemplo, nombre, edad, asignatura tienen más sentido que n, e y a.
- Use notación camelCase (comienza con minúscula) para nombrar variables locales. Por ejemplo, numeroDeEstudiantes, edad, etc.
- Use PascalCase o CamelCase (comienza con mayúscula) para nombrar variables miembro públicas. Por ejemplo, Nombre, Precio, etc.
- Use un guion bajo inicial (_) seguido de notación camelCase para nombrar variables miembro privadas. Por ejemplo, _saldoBancario, _direccionEmail, etc.
Puede aprender más sobre convenciones de nomenclatura en C# aquí.
No se preocupe por variables miembro públicas y privadas. Las aprenderemos en capítulos posteriores.
Tipos de datos primitivos en C#
Las variables en C# se clasifican ampliamente en dos tipos: Tipos por valor y Tipos por referencia. En este tutorial discutiremos sobre tipos de datos primitivos (simples) que es una subclase de Tipos por valor.
Los tipos por referencia se cubrirán en tutoriales posteriores. Sin embargo, si quiere saber más sobre tipos de variables, visite Tipos y variables de C# (docs oficiales de C#).
Booleano (bool)
- El tipo de dato booleano tiene dos valores posibles:
trueofalse - Valor por defecto:
false - Las variables booleanas se usan generalmente para comprobar condiciones como en sentencias if, bucles, etc.
Por ejemplo:
using System;
namespace TipoDato {
class EjemploBooleano {
public static void Main(string[] args) {
bool esValido = true;
Console.WriteLine(esValido);
}
}
}
Cuando ejecutamos el programa, la salida será:
True
Integrales con signo
Estos tipos de datos almacenan valores enteros (tanto positivos como negativos). De los bits totales disponibles, un bit se usa para el signo.
1. sbyte
- Tamaño: 8 bits
- Rango: -128 a 127.
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploSByte {
public static void Main(string[] args) {
sbyte nivel = 23;
Console.WriteLine(nivel);
}
}
}
Cuando ejecutamos el programa, la salida será:
23
Intente asignar valores fuera de rango, es decir, menores que -128 o mayores que 127 y vea qué sucede.
2. short
- Tamaño: 16 bits
- Rango: -32.768 a 32.767
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploShort {
public static void Main(string[] args) {
short valor = -1109;
Console.WriteLine(valor);
}
}
}
Cuando ejecutamos el programa, la salida será:
-1109
3. int
- Tamaño: 32 bits
- Rango: -2.147.483.648 a 2.147.483.647
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploInt {
public static void Main(string[] args) {
int puntuacion = 51092;
Console.WriteLine(puntuacion);
}
}
}
Cuando ejecutamos el programa, la salida será:
51092
4. long
- Tamaño: 64 bits
- Rango: -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
- Valor por defecto:
0L[L al final representa que el valor es de tipo long]
Por ejemplo:
using System;
namespace TipoDato {
class EjemploLong {
public static void Main(string[] args) {
long rango = -7091821871L;
Console.WriteLine(rango);
}
}
}
Cuando ejecutamos el programa, la salida será:
-7091821871
Integrales sin signo
Estos tipos de datos solo almacenan valores iguales o mayores que 0. Generalmente usamos estos tipos de datos para almacenar valores cuando estamos seguros de que no tendremos valores negativos.
1. byte
- Tamaño: 8 bits
- Rango: 0 a 255.
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploByte {
public static void Main(string[] args) {
byte edad = 62;
Console.WriteLine(edad);
}
}
}
Cuando ejecutamos el programa, la salida será:
62
2. ushort
- Tamaño: 16 bits
- Rango: 0 a 65.535
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploUShort {
public static void Main(string[] args) {
ushort valor = 42019;
Console.WriteLine(valor);
}
}
}
Cuando ejecutamos el programa, la salida será:
42019
3. uint
- Tamaño: 32 bits
- Rango: 0 a 4.294.967.295
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploUInt {
public static void Main(string[] args) {
uint puntuacionTotal = 1151092;
Console.WriteLine(puntuacionTotal);
}
}
}
Cuando ejecutamos el programa, la salida será:
1151092
4. ulong
- Tamaño: 64 bits
- Rango: 0 a 18.446.744.073.709.551.615
- Valor por defecto: 0
Por ejemplo:
using System;
namespace TipoDato {
class EjemploULong {
public static void Main(string[] args) {
ulong rango = 17091821871L;
Console.WriteLine(rango);
}
}
}
Cuando ejecutamos el programa, la salida será:
17091821871
Punto flotante
Estos tipos de datos almacenan valores de punto flotante, es decir, números que contienen valores decimales. Por ejemplo, 12.36, -92.17, etc.
1. float
- Tipo de punto flotante de precisión simple
- Tamaño: 32 bits
- Rango: 1.5 × 10⁻⁴⁵ a 3.4 × 10³⁸
- Valor por defecto: 0.0F [F al final representa que el valor es de tipo float]
Por ejemplo:
using System;
namespace TipoDato {
class EjemploFloat {
public static void Main(string[] args) {
float numero = 43.27F;
Console.WriteLine(numero);
}
}
}
Cuando ejecutamos el programa, la salida será:
43.27
2. double
- Tipo de punto flotante de doble precisión. ¿Cuál es la diferencia entre precisión simple y doble?
- Tamaño: 64 bits
- Rango: 5.0 × 10⁻³²⁴ a 1.7 × 10³⁰⁸
- Valor por defecto: 0.0D [D al final representa que el valor es de tipo double]
Por ejemplo:
using System;
namespace TipoDato {
class EjemploDouble {
public static void Main(string[] args) {
double valor = -11092.53D;
Console.WriteLine(valor);
}
}
}
Cuando ejecutamos el programa, la salida será:
-11092.53
Carácter (char)
- Representa un carácter unicode de 16 bits.
- Tamaño: 16 bits
- Valor por defecto: '\0'
- Rango: U+0000 ('\u0000') a U+FFFF ('\uffff')
Por ejemplo:
using System;
namespace TipoDato {
class EjemploChar {
public static void Main(string[] args) {
char ch1 ='\u0042';
char ch2 = 'x';
Console.WriteLine(ch1);
Console.WriteLine(ch2);
}
}
}
Cuando ejecutamos el programa, la salida será:
B x
El valor unicode de 'B' es '\u0042', por lo que imprimir ch1 imprimirá 'B'.
Decimal
- El tipo decimal tiene más precisión y un rango menor comparado con tipos de punto flotante (double y float). Por eso es apropiado para cálculos monetarios.
- Tamaño: 128 bits
- Valor por defecto: 0.0M [M al final representa que el valor es de tipo decimal]
- Rango: (-7.9 x 10²⁸ a 7.9 x 10²⁸) / (10⁰ a 10²⁸)
Por ejemplo:
using System;
namespace TipoDato {
class EjemploDecimal {
public static void Main(string[] args) {
decimal saldoBancario = 53005.25M;
Console.WriteLine(saldoBancario);
}
}
}
Cuando ejecutamos el programa, la salida será:
53005.25
El sufijo M o m debe agregarse al final, de lo contrario el valor se tratará como double y se generará un error.
Literales en C#
Veamos la siguiente declaración:
int numero = 41;
Aquí,
intes un tipo de dato- numero es una variable y
41es un literal
Los literales son valores fijos que aparecen en el programa. No requieren ningún cómputo. Por ejemplo, 5, false, 'w' son literales que aparecen en un programa directamente sin ningún cómputo.
Literales booleanos
trueyfalseson los literales booleanos disponibles.- Se usan para inicializar variables booleanas.
Por ejemplo:
bool esValido = true; bool estaPresente = false;
Literales enteros
- Los literales enteros se usan para inicializar variables de tipos de datos enteros, es decir,
sbyte,short,int,long,byte,ushort,uintyulong. - Si un literal entero termina con
Lol, es de tipo long. Para mejor práctica useL(nol).long valor1 = 4200910L; long valor2 = -10928190L;
- Si un literal entero comienza con
0x, representa un valor hexadecimal. Números sin prefijos se tratan como valor decimal. Representación octal y binaria no están permitidas en C#.int valorDecimal = 25; int valorHex = 0x11c;// valor decimal 284
Literales de punto flotante
- Los literales de punto flotante se usan para inicializar variables de tipos de datos float y double.
- Si un literal de punto flotante termina con sufijo
foF, es de tipo float. Similarmente, si termina condoD, es de tipo double. Si ninguno de los sufijos está presente, es de tipo double por defecto. - Estos literales contienen e o E cuando se expresan en notación científica.
double numero = 24.67;// double por defecto float valor = -12.29F; double notacionCientifica = 6.21e2;// equivalente a 6.21 x 10² es decir 621
Literales de carácter y cadena
- Los literales de carácter se usan para inicializar variables de tipo de dato char.
- Los literales de carácter se encierran en comillas simples. Por ejemplo,
'x','p', etc. - Pueden representarse como carácter, secuencia de escape hexadecimal, representación unicode o valores enteros casteados a char.
char ch1 = 'R';// carácter char ch2 = '\x0072';// hexadecimal char ch3 = '\u0059';// unicode char ch4 = (char)107;// casteado desde entero
- Los literales de cadena son la colección de literales de carácter.
- Se encierran en comillas dobles. Por ejemplo, "Hola", "Programación Fácil", etc.
string primerNombre = "Ricardo"; string apellido = " Feynman";
- C# también soporta caracteres de secuencia de escape tales como:
Carácter Significado \'Comilla simple \"Comilla doble \\Barra invertida \nNueva línea \rRetorno de carro \tTabulación horizontal \aAlerta \bRetroceso
Lenguaje C
- Dominando Variables, Literales y Constantes en C++: Guía Completa
- Entendiendo los Tipos de Datos en C++: Fundamentos, Modificadores y Mejores Prácticas
- Variables, constantes y literales en C: guía completa
- Tipos de datos en C explicados: int, float, char y más – guía completa
- Entendiendo las clases de almacenamiento en C: ámbito, vida y rendimiento
- Variables y tipos de datos en C++: Guía experta sobre int, double, char, string, bool
- Entendiendo los tipos de datos en C: Guía completa
- Dominando tipos de datos en Python: Guía práctica
- Variables y Literales en Java: Guía Completa
- Tipos de Datos Primitivos en Java: Guía Completa con Ejemplos
- Entendiendo los Tipos de Variables en Java: Guía Completa