typeparam example cref c#

cref - summary example c#



LĂ­nea continuar personaje en C# (6)

Tenemos una prueba unitaria con variable que contiene una cadena muy larga.

La pregunta es cómo escribir esto en el código, sin problemas con los saltos de línea o que el código es difícil de leer.

En VB hay un personaje de continuación de línea, ¿hay un equivalente en C #?


Debe usar una de las siguientes formas:

string s = @"loooooooooooooooooooooooong loooooong long long long"; string s = "loooooooooong loooong" + " long long" ;


Puedes usar literales literales:

const string test = @"Test 123 456 ";

Pero la sangría de la 1ra línea es complicada / fea.


Si declaró diferentes variables, entonces use el siguiente método simple:

Int salary=2000; String abc="I Love Pakistan"; Double pi=3.14; Console.Writeline=salary+"/n"+abc+"/n"+pi; Console.readkey();


Constantes de cadena

Solo usa el operador + y divide la cuerda en líneas legibles por humanos. El compilador detectará que las cadenas son constantes y las concatenará en tiempo de compilación. Consulte la Guía de programación de MSDN C # here .

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 la interpolación de cadenas para sustituir valores en su cadena, el $ caracter debe preceder a cada línea donde se debe realizar 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 consecuencia de rendimiento negativo de múltiples llamadas a la string.Format y eventual concatenación de las cadenas (marcado 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<System.Int32>.Invoke IL_004E: box System.Int32 IL_0053: call System.String.Format *** IL_0058: call System.String.Concat ***

Aunque puede usar $@ para proporcionar una sola cadena y evitar los problemas de rendimiento, a menos que el espacio en blanco esté dentro {} (que parece impar, IMO), 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 = $@"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í, la cadena de formato es una constante única 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 puede ser difícil de mantener dada la posible separación entre la cadena de formato y los tokens de sustitución.


C # le permitirá dividir una cadena 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 está buscando la alternativa a & _ desde VB, use + para unir sus líneas.