C#插值字符串中的可选参数是什么?
插值字符串是C#6.0的新function之一。
根据MSDN,嵌入式C#表达式的语法可以包含一个可选的逗号分隔值,在文档中视为 。
不幸的是,我没有找到这个领域的用途。
从它的名称可以认为这个值设置了“插值”字段的最大大小,但是当我尝试以下表达式时:
var p = Process.GetCurrentProcess(); Console.WriteLine($"Process name is {p.ProcessName, 5}");
我得到以下输出:
Process name is LINQPad.UserQuery
它是用于该字段的宽度。 由于您的字符串长于您为宽度指定的5个字符,因此该字段将扩展为字符串的长度。 你会看到更长的宽度更显着的差异:
var p = Process.GetCurrentProcess(); $"Process name is {p.ProcessName, 50}".Dump();
收益率:
Process name is LINQPad.UserQuery
正字段大小是右对齐的; 负字段大小是左对齐的。
MSDN的“ 复合格式”页面上的文档更好:
可选的对齐组件是一个有符号整数,表示首选的格式化字段宽度。 如果alignment的值小于格式化字符串的长度,则忽略alignment,并将格式化字符串的长度用作字段宽度。 如果对齐为正,则字段中的格式化数据右对齐;如果对齐为负,则对齐左对齐。 如果需要填充,则使用空格。 如果指定了对齐,则需要逗号。
数字是对齐 ,在此处对齐组件中记录。
如果对齐为正,则字段中的格式化数据右对齐;如果对齐为负,则对齐左对齐。
在您的示例中,如果长度小于5
字符, 对齐将使用空格填充p.ProcessName
。 如果字符串长度小于对齐的绝对值(如示例中所示),则对齐无效。
例
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");
结果
xMyTextx xMyTextx x MyTextx xMyText x