Saltar al contenido

Carácter de continuación de línea en C#

Recuerda que en las ciencias un problema casi siempere puede tener varias resoluciones, no obstante nosotros aquí te compartimos lo más óptimo y eficiente.

Solución:

C# te permitirá tener un string dividido en varias líneas, el término se llama verbatim literal:

string myString = @"this is a
                    test
                   to see how long my string
                   can be



                    and it can be quite long";

Si buscas la alternativa a & _ de VB, utilice el + para unir sus líneas.

Constantes de cadena

solo usa el + operador y romper el string en líneas legibles por humanos. El compilador detectará que las cadenas son constantes y las concatenará en el momento de la compilación. Consulte la Guía de programación de C# de MSDN aquí.

p.ej

const string myVeryLongString = 
    "This is the opening paragraph of my long string. " +
    "Which is split over multiple lines to improve code readability, " +
    "but is in fact, just one long string.";

IL_0003: ldstr "This is the opening paragraph of my long string. Which is split over multiple lines to improve code readability, but is in fact, just one long string."

Variables de cadena

Tenga en cuenta que al usar string interpolación para sustituir valores en su stringque el $ el personaje debe preceder cada Línea donde se necesita hacer una sustitución:

var interpolatedString = 
    "This line has no substitutions. " +
    $" This line uses count widgets, and " +
    $" CountFoos() foos were found.";

Sin embargo, esto tiene la rendimiento negativo consecuencia de múltiples llamadas a string.Format y eventual concatenación de las cadenas (marcadas con ***)

IL_002E:  ldstr       "This line has no substitutions. "
IL_0033:  ldstr       " This line uses 0 widgets, and "
IL_0038:  ldloc.0     // count
IL_0039:  box         System.Int32
IL_003E:  call        System.String.Format ***
IL_0043:  ldstr       " 0 foos were found."
IL_0048:  ldloc.1     // CountFoos
IL_0049:  callvirt    System.Func.Invoke
IL_004E:  box         System.Int32
IL_0053:  call        System.String.Format ***
IL_0058:  call        System.String.Concat ***

Aunque podrías usar [email protected] para proporcionar un solo string y evitar los problemas de rendimiento, a menos que el espacio en blanco se coloque dentro (que parece extraño, en mi opinión), esto tiene el mismo problema que la respuesta de Neil Knight, ya que incluirá cualquier espacio en blanco en los desgloses de línea:

var interpolatedString = [email protected]"When breaking up strings with `@` it introduces
    <- [newLine and whitespace here!] each time I break the string.
    <- [More whitespace] CountFoos() foos were found.";

El espacio en blanco inyectado es fácil de detectar:

IL_002E:  ldstr       "When breaking up strings with `@` it introduces
    <- [newLine and whitespace here!] each time I break the string.
    <- [More whitespace] 0 foos were found."

Una alternativa es volver a string.Format. Aquí, el formato string es una sola constante según mi respuesta inicial:

const string longFormatString = 
    "This is the opening paragraph of my long string with 0 chars. " +
    "Which is split over multiple lines to improve code readability, " +
    "but is in fact, just one long string with 1 widgets.";

Y luego evaluado como tal:

string.Format(longFormatString, longFormatString.Length, CountWidgets());

Sin embargo, esto aún puede ser complicado de mantener dada la separación potencial entre el formato string y las fichas de sustitución.

@"string here
that is long you mean"

Pero ten cuidado, porque

@"string here
           and space before this text
     means the space is also a part of the string"

También escapa cosas en el string

@"c:\folder" // c:\folder
@"c:folder" // c:folder
"c:\folder" // c:folder

Relacionados

  • ¿Qué significa el símbolo @ antes de un nombre de variable en C#?
  • MSDN string referencia

valoraciones y comentarios

Si crees que te ha sido de ayuda nuestro artículo, nos gustaría que lo compartas con más programadores y nos ayudes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *