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.