Long string interpolation lines in C#6
我发现,当将字符串插值应用于现有代码基的字符串格式调用时,尽管字符串插值非常好,但考虑到通常首选的列限制,字符串对于一行来说很快变得太长。尤其是当被插值的表达式很复杂时。使用格式字符串,可以将变量列表拆分为多行。
1 2 3 | var str = string.Format("some text {0} more text {1}", obj1.property, obj2.property); |
有没有人有任何打破这些线的首选方法?
我想你可以做如下的事情:
1 2 | var str = $"some text { obj1.property }" + " more text { obj2.property }; |
你可以把这行分成多行,但我不会说语法看起来很好。
您需要使用
1 2 3 4 5 | string s = $@"This is all { 10 } going to be one long { DateTime.Now } line."; |
上面的字符串不包含任何换行符,实际上将包含以下内容:
This is all 10 going to be one long 01.08.2015 23.49.47 line.
(注:挪威格式)
既然这么说了,我不会停止使用
可以将
1 2 | var str = $@"some text { obj1.property } more text { obj2.property }"; |
但这会给你一个介于两者之间的
虽然OP要求其他的东西,但我希望许多阅读这个问题的人会喜欢多行插入的
1 2 3 | $@"Height: {height} Width: {width} Background: {background}" |
我以重写的ToString()中的StringBuilder为例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 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(); } |
就是这样:
1 2 | var str = $"some text { obj1.property }" + $" more text { obj2.property }"; |
注意