J’ai trouvé que bien que l’interpolation de chaîne soit vraiment agréable lorsqu’elle est appliquée aux appels de format de chaîne de ma base de code existante, étant donné la limite de colonne généralement préférée, la chaîne devient rapidement trop longue pour une seule ligne. Surtout quand les expressions interpolées sont complexes. Avec une chaîne de format, vous avez une liste de variables que vous pouvez diviser en plusieurs lignes.
var str = ssortingng.Format("some text {0} more text {1}", obj1.property, obj2.property);
Quelqu’un at-il un moyen privilégié de briser ces lignes?
Je suppose que vous pourriez faire quelque chose comme:
var str = $"some text { obj1.property }" + " more text { obj2.property };
Vous pouvez diviser la ligne en plusieurs lignes, mais je ne dirais pas que la syntaxe est plus belle.
Vous devez utiliser la syntaxe $@
pour utiliser une chaîne textuelle interpolée, et vous pouvez placer les nouvelles lignes dans les parameters {...}
, comme ceci:
ssortingng s = $@"This is all { 10 } going to be one long { DateTime.Now } line.";
La chaîne ci-dessus ne contiendra pas de nouvelles lignes et aura effectivement du contenu comme ceci:
Ceci est tout 10 une longue ligne 01.08.2015 23.49.47.
(note, format norvégien)
Maintenant, cela dit, je n’arrêterais pas d’utiliser ssortingng.Format
. À mon avis, certaines de ces expressions d’interpolation de chaînes sont vraiment bonnes, mais les plus complexes deviennent très difficiles à lire. Considérant que, sauf si vous utilisez FormattableSsortingng
, le code sera compilé dans un appel à Ssortingng.Format
toute façon, je dirais continuer avec Ssortingng.Format
où cela a du sens.
Vous pouvez combiner $
et @
pour obtenir une interpolation de chaîne et un littéral de chaîne multi-lignes:
var str = $@"some text { obj1.property } more text { obj2.property }";
Mais cela vous donnera un caractère NewLine
entre les deux, alors ce ne sera peut-être pas ce que vous voulez.
OP a demandé autre chose, mais je m’attends à ce que beaucoup de gens qui lisent cette question souhaitent un $""
interpolé $""
qui fonctionne comme @""
. Pour ce faire, utilisez $@""
$@"Height: {height} Width: {width} Background: {background}"
J’ai utilisé SsortingngBuilder dans ToSsortingng () en tant qu’exemple.
// return employee data public override ssortingng ToSsortingng() { SsortingngBuilder buffer = new SsortingngBuilder(); 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.ToShortDateSsortingng()}"); return buffer.ToSsortingng(); }
Ça y est:
var str = $"some text { obj1.property }" + $" more text { obj2.property }";
Notez le second $
dans le $"..." + $"..."