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);
}