Aprende a escribir código más claro y flexible en C#: constructores con parámetros opcionales, sobrecarga, asignación de tuplas, argumentos con nombre y manejo seguro de cadenas. Además, refuerza conceptos como enumeraciones, propiedades, firma de métodos, concatenación e interpolación de texto. Todo con ejemplos directos y listos para usar en consola.
¿Cómo crear y sobrecargar constructores con parámetros opcionales en C#?
La idea clave: puedes definir varios constructores en una clase y agregar parámetros opcionales con valores por defecto. Así, el objeto se puede construir de distintas formas según lo necesites. Esto mejora la legibilidad y reduce errores.
Un constructor básico pide lo mínimo: nombre y año.
Un segundo constructor agrega un parámetro requerido: tipo de escuela (una enumeración).
Además, define parámetros opcionales: país y ciudad con valor por defecto vacío.
Las listas de parámetros se separan con coma. El punto y coma cierra instrucciones.
publicenumTipoEscuela{ Preescolar, Primaria, Secundaria }publicclassEscuela{publicstring Nombre {get;set;}publicint Año {get;set;}publicTipoEscuela Tipo {get;set;}publicstring País {get;set;}="";publicstring Ciudad {get;set;}="";// Constructor 1: mínimo requerido.publicEscuela(string nombre,int año){// Asignación de tuplas: compacto y claro.(Nombre, Año)=(nombre, año);}// Constructor 2: con parámetro requerido 'tipo' y opcionales 'país' y 'ciudad'.publicEscuela(string nombre,int año,TipoEscuela tipo,string país ="",string ciudad =""){(Nombre, Año, Tipo)=(nombre, año, tipo); País = país;// Asignación directa.this.Ciudad = ciudad;// Uso de 'this' para diferenciar campo y parámetro.}// Opcional: personalizar salida en consola.publicoverridestringToString()=>$"{Nombre} ({Tipo})";}
Con argumentos con nombre, puedes enviar solo los opcionales que quieras y en cualquier orden.
int año =default;var esc1 =newEscuela("La Silla Cadh-Cademy", año, TipoEscuela.Primaria, país:"Colombia",ciudad:"Bogotá");var esc2 =newEscuela("La Silla Cadh-Cademy", año, TipoEscuela.Primaria,ciudad:"Bogotá");// omite 'país'.
¿Por qué la firma permite múltiples versiones?
La firma de un método define: tipo de retorno, nombre y parámetros. Puedes sobrecargar métodos y constructores con el mismo nombre siempre que sus parámetros sean diferentes. Así eliges la versión más conveniente según el caso.
¿Cómo se separan listas y sentencias?
Punto y coma: final de una instrucción.
Coma: separa elementos dentro de una lista, por ejemplo, en parámetros.
Puedes dividir parámetros en varias líneas sin problema si no cierras la instrucción con punto y coma.
¿Cómo manejar cadenas, comillas y saltos de línea en consola?
Al imprimir texto, a veces necesitas incluir comillas dentro de la cadena o controlar la nueva línea correctamente.
Para dibujar comillas dentro de la cadena: usa la secuencia de escape \".
Para un salto de línea portátil: prefiere System.Environment.NewLine en lugar de "\n". Diferentes sistemas operativos manejan la nueva línea distinto; con Environment.NewLine obtienes el equivalente correcto dentro del framework.
var nombre ="La Silla Cadh-Cademy";Console.WriteLine($"El nombre es \"{nombre}\".");// Concatenación vs. interpolación.var msg1 ="Hola, "+ nombre;// concatenación con +var msg2 =$"Hola, {nombre}";// interpolación con $// Nueva línea segura entre sistemas.Console.WriteLine("Primera línea."+ System.Environment.NewLine +"Segunda línea.");
También puedes sobreescribir ToString() para definir cómo se muestra un objeto al imprimirlo.
La interpolación de cadenas ($"...{var}...") facilita el formateo y disminuye errores frente a la concatenación.
¿Qué conceptos y habilidades consolidaste en C# para consola?
Este bloque refuerza prácticas esenciales para escribir código robusto y legible.
Inicialización de objetos con la palabra clave new.
Propiedades: autoimplementadas y uso de this para evitar sombras de nombres.
Enumeraciones: mejoran legibilidad y reducen errores.
Constructores: múltiples sobrecargas con parámetros requeridos y opcionales.
Parámetros opcionales: valores por defecto que vuelven flexible la API.
Argumentos con nombre: puedes omitir y reordenar opcionales con claridad.
Firma de métodos: retorno, nombre y parámetros determinan la sobrecarga válida.
Asignación de tuplas: asigna varios valores en una sola línea.
Tipos de datos: string y entero en escenarios de consola.
Espacios de nombres: uso de System y Environment del framework.
Separadores: punto y coma para sentencias, coma para listas.
Cadenas: concatenación con + e interpolación con $.
Escape de caracteres: \" para comillas, System.Environment.NewLine para newline.
¿Tienes dudas o quieres compartir cómo aplicarías estos constructores y parámetros opcionales en tu proyecto? ¡Comenta y conversemos sobre tu caso!