98 - Crear string de múltiples líneas con el modificador @ |
Normalmente cuando definimos una variable de tipo string e inmediatamente la inicializamos lo hacemos en una única línea:
string nombre = "Juan Carlos";
Si la cadena es grande normalmente podemos utilizar el operado + para concatenar cada uno de los string:
string sql = "select codigo, descripcion, precio " + " from articulos " + " where precio>10";
Pero eventualmente podemos utilizar el modificador @ previo a las comillas dobles y disponer un string de múltiples líneas sin tener que concatenar:
string sql = @"select codigo, descripcion, precio from articulos where precio>10";
Cuando antecedemos el caracter @ luego significa que el string estará constituido por múltiples líneas, los saltos de línea luego están presentes en el string almacenado. Si imprimirmos la variable 'sql' luego su contenido es:
Confeccionar una aplicación que muestre un menú de opciones con el siguiente formato:
1 - Carga de 2 valores 2 - Mostrar la suma 3 - Mostrar la resta 4 - Mostrar el producto 5 - Mostrar la división 6 - Finalizar
Almacenar todas las opciones del menú en un único string de múltiples líneas.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StringMultiplesLineas1 { class OperacionNumeros { public int Numero1 { get; set; } public int Numero2 { get; set; } public OperacionNumeros() { MenuOpciones(); } private void MenuOpciones() { string opciones = @"1 - Carga de 2 valores 2 - Mostrar la suma 3 - Mostrar la resta 4 - Mostrar el producto 5 - Mostrar la división 6 - Finalizar"; int op; do { Console.WriteLine(opciones); Console.Write("Elija su opcion:"); op = int.Parse(Console.ReadLine()); switch(op) { case 1: Cargar(); break; case 2: Sumar(); break; case 3: Restar(); break; case 4: Multiplicar(); break; case 5: Dividir(); break; } Console.WriteLine("Presione una tecla para continuar"); Console.ReadKey(); Console.Clear(); } while (op != 6); } private void Cargar() { Console.Write("Ingrese primer valor:"); Numero1 = int.Parse(Console.ReadLine()); Console.Write("Ingrese segundo valor:"); Numero2 = int.Parse(Console.ReadLine()); } private void Sumar() { Console.WriteLine($"La suma de {Numero1} y {Numero2} es {Numero1 + Numero2}"); } private void Restar() { Console.WriteLine($"La resta de {Numero1} y {Numero2} es {Numero1 - Numero2}"); } private void Multiplicar() { Console.WriteLine($"La multiplicación de {Numero1} y {Numero2} es {Numero1 * Numero2}"); } private void Dividir() { Console.WriteLine($"La division de {Numero1} y {Numero2} es {Numero1 / Numero2}"); } } class Program { static void Main(string[] args) { new OperacionNumeros(); } } }
Creamos una clase llamada 'OperacionNumeros' donde definimos dos propiedades que nos permiten almacenar los dos valores ingresados por teclado:
class OperacionNumeros { public int Numero1 { get; set; } public int Numero2 { get; set; }
En el método 'MenuOpciones' definimos un string llamado 'opciones' con múltiples líneas:
private void MenuOpciones() { string opciones = @"1 - Carga de 2 valores 2 - Mostrar la suma 3 - Mostrar la resta 4 - Mostrar el producto 5 - Mostrar la división 6 - Finalizar";
Dentro de un ciclo repetitivo mostramos el menú de opciones y según el número que carga el operador procedemos a llamar al método respectivo:
int op; do { Console.WriteLine(opciones); Console.Write("Elija su opcion:"); op = int.Parse(Console.ReadLine()); switch(op) { case 1: Cargar(); break; case 2: Sumar(); break; case 3: Restar(); break; case 4: Multiplicar(); break; case 5: Dividir(); break; } Console.WriteLine("Presione una tecla para continuar"); Console.ReadKey(); Console.Clear(); } while (op != 6); }
Si ejecutamos el programa podemos comprobar que se respetan los saltos de línea cuando imprimimos la variable 'opciones':
Podemos utilizar la interpolación de string si los mismos tienen múltiples líneas. Es importante disponer el modificador '$' previo al modificar '@' si no disponemos de la versión C# 8 o superiores:
private void TodasLasOperaciones() { string resultado = $@"La suma de {Numero1} y {Numero2} es {Numero1 + Numero2} La resta de {Numero1} y {Numero2} es {Numero1 - Numero2} La multiplicación de {Numero1} y {Numero2} es {Numero1 * Numero2} La division de {Numero1} y {Numero2} es {Numero1 / Numero2}"; Console.WriteLine(resultado); }