最佳答案
C # 6带来了编译器对带语法的内插字符串文字的支持:
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
This is great for short strings, but if you want to produce a longer string must it be specified on a single line?
使用其他类型的字符串,你可以:
var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
或者:
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
我不能找到一种方法来实现这与字符串插值没有一行:
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
我意识到,在这种情况下,你可以使用 \r\n
代替 Environment.NewLine
(不太便于移植) ,或者将它拉出到一个本地,但是在某些情况下,你不能将它减少到一行以下而不损失语义强度。
是否只是字符串插值不应该用于长字符串的情况?
对于较长的字符串,我们是否应该使用 StringBuilder
进行字符串处理?
var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
还是有更优雅的东西?