System.Console.Write()中的奇怪行为

Joh*_*son 0 c#

这样做是为了测试:

string text1 = "Letter";
string text2 = "Number";

System.Console.Write("{0}" + " {0}" + " {0}", text1, " {0}", text2);
Run Code Online (Sandbox Code Playgroud)

结果输出:

Letter Letter Letter
Run Code Online (Sandbox Code Playgroud)

这不应该是输出吗?

Letter Letter Letter Number
Run Code Online (Sandbox Code Playgroud)

这样做:

System.Console.Write("{0}" + " {0}" + " {0}", text1, " {1}", text2);
Run Code Online (Sandbox Code Playgroud)

也导致此输出:

Letter Letter Letter
Run Code Online (Sandbox Code Playgroud)

bas*_*der 6

没有输出是正确的,只有提供给此Console.Write()方法重载的第一个文本值是可能包含占位符的格式.

您使用的实际格式"{0}" + " {0}" + " {0}"在您的情况下(有效评估"{0} {0} {0}").您的其余呼叫现在作为单独的参数提供:

  • text1 作为第一个参数,用于替换所有出现的 {0}
  • " {0}" 作为第二个参数,用于替换所有的出现 {1}
  • text2 作为第三个参数,用于替换所有的出现 {2}

由于实际格式文本只包含占位符,因此{0}您将永远不会在结果文本中看到其他提供的参数.