8

所以我最近一直在玩 C#,但我不明白输出格式。

using System;

namespace Arrays
{
    class Program
    {
        static void Main()
        {
            Random r = new Random();

            int[] Numbers = new int[10];
            for (int i = 0; i < Numbers.Length; i++)
            {
                Numbers[i] = r.Next(101);
            }

            for (int i = 0; i < Numbers.Length; i++)
            {
                Console.WriteLine("index {0} holds number {0}", i,Numbers[i]);
            }
        }
    }
}

输出 代码

我的预期输出是index i holds number Number[i]. 因此,任何人都可以解释要更改的内容,或者将我与有关输出格式主题的良好 C# 页面链接。我知道有一种方法可以用两行来完成。

4

3 回答 3

19

改变

Console.WriteLine("index {0} holds number {0}", i, Numbers[i]);

Console.WriteLine("index {0} holds number {1}", i, Numbers[i]);

原因:您的索引(在格式字符串中)以从零开始的索引顺序引用字符串之后的参数。因此,字符串后面的第一个参数为 {0},第二个参数为 {1},如果您有第三个参数则为 {2},依此类推。

有关更多信息,请参阅此页面

编辑:您也可以在格式字符串中多次引用参数。例如:

Console.WriteLine(
    "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]);

这也相当于

Console.WriteLine(String.Format(
    "index {0} holds number {1} (Numbers[{0}] == {1})", i, Numbers[i]));
于 2013-11-20T15:02:48.143 回答
5

你的第二次打印是错误的。您使用string.Format但不绑定第二个参数。

它应该是:

Console.WriteLine( "index {0} holds number {1}", i, Numbers[i] );
于 2013-11-20T15:04:10.730 回答
5
Console.WriteLine("index {0} holds number {1}", i, Numbers[i] );
于 2013-11-20T15:04:16.337 回答