Dominar el uso adecuado de variables y constantes en .NET es clave para mantener la estabilidad y seguridad de tu aplicación. Utilizar valores constantes permite fijar datos que no cambiarán, como cadenas de conexión o secretos, minimizando riesgos de modificaciones accidentales. Por otro lado, los valores variables ofrecen flexibilidad, permitiendo actualizar datos según las necesidades cambiantes del proyecto.
¿Qué diferencia existe entre variables y constantes en .NET?
La principal diferencia está en la modificación de su valor una vez asignado. Si utilizas una constante (const), el valor debe tiparse desde su definición y no podrás modificarlo posteriormente. En cambio, una variable puede actualizarse sin problema durante la ejecución del programa.
Ejemplo práctico de constantes:
conststring nombre ="Daniel";nombre ="Felipe";// Error: no puede modificarse
¿Cuándo usar valores constantes?
Utiliza constantes cuando sepas que un valor va a mantenerse fijo durante toda la aplicación. Ejemplos comunes incluyen:
Cadenas de conexión a bases de datos.
Secretos o claves API.
Configuraciones generales del sistema.
Usar constantes en estas ocasiones evita modificaciones accidentales que podrían causar fallos en diferentes módulos del proyecto.
¿En qué situación conviene utilizar variables?
Emplea variables cuando el valor puede cambiar o ajustarse durante el ciclo de vida de tu aplicación. Las variables brindan flexibilidad para que la aplicación funcione de manera dinámica según distintas condiciones o entradas de usuario.
Ejemplo práctico de variables:
string apellido ="López";apellido ="Espinoza de los Monteros";// Correcto: valor actualizado
Consejos para elegir entre constante o variable
Considera usar constante para información sensible y elementos cruciales que nunca deban cambiar.
Opta por variables para datos que deban actualizarse con frecuencia o según lógica de aplicación.
// ============================================================================// VARIABLES Y TIPOS DE DATOS PRIMITIVOS EN C#// ============================================================================Console.WriteLine("=== TIPOS DE DATOS PRIMITIVOS EN C# ===\n");// 1. TIPOS NUMERICOS ENTEROSConsole.WriteLine("1. TIPOS NUMERICOS ENTEROS:");byte edad =30;// 8 bits (0-255)short anio =2025;// 16 bits (-32,768 a 32,767)int poblacion =1000000;// 32 bits (-2,147,483,648 a 2,147,483,647)long habitantes =7800000000L;// 64 bits (muy grandes)Console.WriteLine($" byte edad = {edad} (rango: 0 a 255)");Console.WriteLine($" short anio = {anio} (rango: -32,768 a 32,767)");Console.WriteLine($" int poblacion = {poblacion:N0}");Console.WriteLine($" long habitantes = {habitantes:N0}");// 2. TIPOS NUMERICOS DECIMALESConsole.WriteLine("\n2. TIPOS NUMERICOS DECIMALES:");float temperatura =36.5f;// 32 bits, precisión ~7 dígitosdouble altura =1.75;// 64 bits, precisión ~15-17 dígitosdecimal precio =29.99m;// 128 bits, precisión ~28-29 dígitos (ideal para dinero)Console.WriteLine($" float temperatura = {temperatura}°C (precisión: ~7 dígitos)");Console.WriteLine($" double altura = {altura}m (precisión: ~15-17 dígitos)");Console.WriteLine($" decimal precio = ${precio} (precisión: ~28-29 dígitos)");// 3. TIPOS DE CARACTERES Y TEXTOConsole.WriteLine("\n3. TIPOS DE CARACTERES Y TEXTO:");char inicial ='A';// Un solo carácter Unicodestring nombre ="Alex";// Cadena de caracteresstring apellido ="Vera";Console.WriteLine($" char inicial = '{inicial}' (un solo carácter)");Console.WriteLine($" string nombre = \"{nombre}\" (cadena de caracteres)");Console.WriteLine($" string apellido = \"{apellido}\"");// 4. TIPO BOOLEANOConsole.WriteLine("\n4. TIPO BOOLEANO:");bool esEstudiante = true;// true o falsebool esMayorDeEdad = edad >=18;Console.WriteLine($" bool esEstudiante = {esEstudiante}");Console.WriteLine($" bool esMayorDeEdad = {esMayorDeEdad} (calculado: {edad} >= 18)");// 5. INFERENCIA DE TIPOS CON 'var'Console.WriteLine("\n5. INFERENCIA DE TIPOS CON 'var':");var peso =70.5;// El compilador infiere que es doublevar activo = true;// El compilador infiere que es boolvar codigo =12345;// El compilador infiere que es intConsole.WriteLine($" var peso = {peso} (inferido como: {peso.GetType().Name})");Console.WriteLine($" var activo = {activo} (inferido como: {activo.GetType().Name})");Console.WriteLine($" var codigo = {codigo} (inferido como: {codigo.GetType().Name})");// ============================================================================// CONSTANTES VS VARIABLES// ============================================================================Console.WriteLine("\n\n=== CONSTANTES VS VARIABLES ===\n");// CONSTANTES: Valores que NO pueden cambiar durante la ejecuciónConsole.WriteLine("CONSTANTES (valores inmutables):");constdouble PI =3.14159;// Constante matemáticaconstint DIAS_SEMANA =7;// Constante de configuraciónconst string EMPRESA ="Mi Empresa S.A.";// Constante de textoconst bool ES_VERSION_DEBUG = true;// Constante de configuraciónConsole.WriteLine($" const double PI = {PI}");Console.WriteLine($" const int DIAS_SEMANA = {DIAS_SEMANA}");Console.WriteLine($" const string EMPRESA = \"{EMPRESA}\"");Console.WriteLine($" const bool ES_VERSION_DEBUG = {ES_VERSION_DEBUG}");// Intentar cambiar una constante causaría un error de compilación:// PI = 3.14; // ❌ ERROR: No se puede asignar a una constante// VARIABLES: Valores que SÍ pueden cambiar durante la ejecuciónConsole.WriteLine("\nVARIABLES (valores mutables):");string nombreUsuario ="Alex";// Puede cambiarint intentos =0;// Puede cambiardouble saldo =1000.50;// Puede cambiarConsole.WriteLine($" Valores iniciales:");Console.WriteLine($" string nombreUsuario = \"{nombreUsuario}\"");Console.WriteLine($" int intentos = {intentos}");Console.WriteLine($" double saldo = ${saldo}");// Modificando las variablesnombreUsuario ="Alex Vera";// ✅ Válido: las variables pueden cambiarintentos++;// ✅ Válido: incrementarsaldo -=50.25;// ✅ Válido: restar del saldoConsole.WriteLine($"\n Después de modificaciones:");Console.WriteLine($" nombreUsuario = \"{nombreUsuario}\" (cambió)");Console.WriteLine($" intentos = {intentos} (incrementó)");Console.WriteLine($" saldo = ${saldo} (decrementó)");// ============================================================================// CUÁNDO USAR CADA UNA// ============================================================================Console.WriteLine("\n\n=== CUÁNDO USAR CONSTANTES VS VARIABLES ===\n");Console.WriteLine("USA CONSTANTES cuando:");Console.WriteLine(" • El valor NUNCA cambiará (PI, días de la semana)");Console.WriteLine(" • Configuraciones fijas del sistema");Console.WriteLine(" • Valores que definen límites o reglas de negocio");Console.WriteLine(" • Mejora la legibilidad y mantención del código");Console.WriteLine("\nUSA VARIABLES cuando:");Console.WriteLine(" • El valor puede cambiar durante la ejecución");Console.WriteLine(" • Almacenas datos ingresados por el usuario");Console.WriteLine(" • Realizas cálculos que pueden variar");Console.WriteLine(" • Necesitas flexibilidad en tu programa");// ============================================================================// EJEMPLOS PRÁCTICOS// ============================================================================Console.WriteLine("\n\n=== EJEMPLOS PRÁCTICOS ===\n");// Ejemplo 1: Calculadora de área de círculoConsole.WriteLine("Ejemplo 1: Calculadora de área de círculo");constdouble PI_EXACTO =3.14159265359;// Constante: nunca cambiadouble radio =5.0;// Variable: puede cambiardouble area = PI_EXACTO * radio * radio;// Cálculo usando constante y variableConsole.WriteLine($" Radio: {radio} metros");Console.WriteLine($" Área: {area:F2} metros cuadrados");// Cambiar el radio (la variable)radio =10.0;area = PI_EXACTO * radio * radio;Console.WriteLine($" Nuevo radio: {radio} metros");Console.WriteLine($" Nueva área: {area:F2} metros cuadrados");// Ejemplo 2: Sistema de calificacionesConsole.WriteLine("\nEjemplo 2: Sistema de calificaciones");constdouble NOTA_MAXIMA =10.0;// Constante: la nota máxima no cambiaconstdouble NOTA_APROBACION =6.0;// Constante: la nota mínima para aprobardouble notaEstudiante =8.5;// Variable: cada estudiante tiene diferente notaConsole.WriteLine($" Nota máxima posible: {NOTA_MAXIMA}");Console.WriteLine($" Nota mínima para aprobar: {NOTA_APROBACION}");Console.WriteLine($" Nota del estudiante: {notaEstudiante}");Console.WriteLine($" ¿Aprobó?: {(notaEstudiante >= NOTA_APROBACION ? "Sí" : "No")}");Console.WriteLine("\n=== FIN DEL PROGRAMA ===");