Ale*_*kin 27 .net c# string-interpolation c#-6.0
插值字符串是C#6.0的新功能之一.
根据MSDN,嵌入式C#表达式的语法可以包含一个可选的逗号分隔值,如文档<optional-comma-field-width>中所述.
不幸的是,我没有找到这个字段的用途.
从名称可以看出,这个值设置了"插值"字段的最大大小,但是当我尝试以下表达式时:
var p = Process.GetCurrentProcess();
Console.WriteLine($"Process name is {p.ProcessName, 5}");
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
Process name is LINQPad.UserQuery
Run Code Online (Sandbox Code Playgroud)
D S*_*ley 47
它是用于该字段的宽度.由于您的字符串长于您为宽度指定的5个字符,因此该字段将扩展为字符串的长度.你会看到更长的宽度更显着的差异:
var p = Process.GetCurrentProcess();
$"Process name is {p.ProcessName, 50}".Dump();
Run Code Online (Sandbox Code Playgroud)
收益率:
Process name is LINQPad.UserQuery
Run Code Online (Sandbox Code Playgroud)
正字段大小是右对齐的; 负字段大小是左对齐的.
MSDN 的" 复合格式"页面上的文档更好:
可选的对齐组件是一个有符号整数,表示首选的格式化字段宽度.如果alignment的值小于格式化字符串的长度,则忽略alignment,并将格式化字符串的长度用作字段宽度.如果对齐为正,则字段中的格式化数据右对齐,如果对齐为负,则对齐左对齐.如果需要填充,则使用空格.如果指定了对齐,则需要逗号.
Sta*_*ams 17
数字是对齐,在此处对齐组件中记录.
如果对齐为正,则字段中的格式化数据右对齐,如果对齐为负,则对齐左对齐.
在您的示例中,如果空格小于字符长,则对齐将填充p.ProcessName空格5.如果字符串长度小于对齐的绝对值(如示例所示),则对齐无效.
例
var text = "MyText";
Console.WriteLine($"x{text}x");
Console.WriteLine($"x{text, 3}x");
Console.WriteLine($"x{text, 10}x");
Console.WriteLine($"x{text, -10}x");
Run Code Online (Sandbox Code Playgroud)
结果
xMyTextx
xMyTextx
x MyTextx
xMyText x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10129 次 |
| 最近记录: |