You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#复合格式{0,"+n+"}中+n+作用及输出空格原因解析

代码示例

你提问涉及的C#代码如下:

int n=6;
string a=null;
for(int i=0;i<=n;i++){
    Console.WriteLine("{0,"+n+"}",a+="#");
}
问题解答

"{0,"+n+"}"里的+n+就是基础的字符串拼接操作:C#中用+连接字符串和其他类型值时,会自动把非字符串值转成字符串拼入最终结果。你的代码里n赋值为6,所以这段拼接完成后,实际传给Console.WriteLine的格式字符串是{0,6}——n是格式规则的组成部分,不是待输出的内容,自然不会直接打印出n的值。

你看到输出空格而不是n,是因为不了解C#复合格式的占位符语法。格式占位符的完整结构为{参数索引[,对齐宽度][:格式描述]},逗号后跟随的整数是对齐规则参数,不会作为内容输出:

  • 对齐宽度为正数时,内容右对齐,若内容实际长度小于指定宽度,不足的位置用空格补在内容左侧
  • 对齐宽度为负数时,内容左对齐,不足宽度的空格补在内容右侧

你代码里拼出来的{0,6},实际含义是:将传入的第0个参数(也就是每次循环拼接得到的a字符串)按右对齐规则输出,内容总占6个字符宽度。
循环从i=0到i=6共执行7次,每次a会多拼接一个#:

  • 第1次循环a为1个#,长度1,左侧补5个空格
  • 第2次循环a为2个#,长度2,左侧补4个空格
  • 以此类推,直到最后一次循环a为7个#,长度超过指定宽度6,就不会补空格直接输出
    最终运行结果是一个右对齐的、由#组成的直角三角形,你看到的空格就是为了满足对齐宽度要求补的占位空格。

内容的提问来源于stack exchange,提问作者user17308766

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:03:43