c# - interpolacion - metodo de lagrange c++
Líneas de interpolación de cuerdas largas en C#6 (5)
He descubierto que, si bien la interpolación de cadenas es realmente agradable cuando se aplica a las llamadas de formato de cadenas de mi base de código existente, dado el límite de columna generalmente preferido, la cadena rápidamente se vuelve demasiado larga para una sola línea. Especialmente cuando las expresiones que se interpolan son complejas. Con una cadena de formato tiene una lista de variables que puede dividir en varias líneas.
var str = string.Format("some text {0} more text {1}",
obj1.property,
obj2.property);
¿Alguien tiene algún medio preferido para romper estas líneas?
Supongo que podrías hacer algo como:
var str = $"some text { obj1.property }" +
" more text { obj2.property };
Eso es todo:
var str = $"some text { obj1.property }" +
$" more text { obj2.property }";
Tenga en cuenta el segundo
$
en el
$"..." + $"..."
He usado StringBuilder dentro de ToString () anulado como ejemplo.
// return employee data
public override string ToString()
{
StringBuilder buffer = new StringBuilder();
buffer.AppendLine($"Number: {EmployeeNumber}");
buffer.AppendLine($"Name: {EmployeeName}");
buffer.AppendLine($"Address: {PostalAddress}");
buffer.AppendLine($"Phone: {PhoneNumber}");
buffer.AppendLine($"Age: {EmployeeAge}");
buffer.AppendLine($"Gender: {EmployeeGender}");
buffer.AppendLine($"Status: {EmployeeStatus}");
buffer.AppendLine($"Manager: {EmployeeManager}");
buffer.AppendLine($"Start: {EmployeeStartDate.ToShortDateString()}");
return buffer.ToString();
}
Puede combinar
$
y
@
juntos para obtener la interpolación de cadena y el literal de cadena de varias líneas:
var str = $@"some text { obj1.property }
more text { obj2.property }";
Pero eso le dará un carácter
NewLine
en el medio, por lo que podría no ser lo que desea.
Puede dividir la línea en varias líneas, pero no diría que la sintaxis ya no se ve bien.
Debe usar la sintaxis
$@
para usar una cadena
textual
interpolada, y puede colocar nuevas líneas dentro de los parámetros
{...}
, de esta manera:
string s = $@"This is all {
10
} going to be one long {
DateTime.Now
} line.";
La cadena anterior no contendrá ninguna línea nueva y en realidad tendrá contenido como este:
Todos estos 10 serán una larga línea 01.08.2015 23.49.47.
(nota, formato noruego)
Ahora, habiendo dicho eso, no dejaría de usar
string.Format
.
En mi opinión, algunas de estas expresiones de interpolación de cadenas se ven realmente bien, pero las más complejas comienzan a ser muy difíciles de leer.
Teniendo en cuenta que, a menos que use
FormattableString
, el código se compilará en una llamada a
String.Format
todos modos, diría que continúe con
String.Format
donde tenga sentido.
Si bien OP solicitó algo más, espero que muchas personas que lean esta pregunta deseen un
$""
interpolado multilínea que funcione como
@""
.
Para hacer eso, use
$@""
$@"Height: {height}
Width: {width}
Background: {background}"