为什么我在此代码中遇到索引超出范围错误

时间:2019-04-22 18:20:47

标签: c#

static void Main(string[] args)
    {
           int x = int.Parse(Console.ReadLine());

        char[] ch = new char[] { };
        for(int i = 0; i<x;i++)
        {
            ch[i] = 'o';
        }
        foreach(char item in ch)
        {
            Console.WriteLine(item);
        }
        string a = "w";
        string m = new string(ch);
        Console.Write(a + m + a);

如果输入1,则预期结果为“哇”,如果输入2,则为“哇”,依此类推。 但是我得到的是索引超出范围错误。

1 个答案:

答案 0 :(得分:2)

在C#中,您需要声明char数组(或任何数组)的大小。

要更正代码,只需更改一行。

char[] ch = new char[] { };    // incorrect, initialised with size = 0

char[] ch = new char[x];       // initialise the array with size = x

如果您不知道运行时数组的大小,那么我会考虑使用通用的List<T>

List<T>实现了许多有用的方法,例如Add(),它使您可以在运行时修改集合的大小。您可能会发现有用的其他List方法包括:Count()AddRange()Clear()IndexOf()Remove()

然后您可以执行以下操作:

List<char> ch = new List<char>();
for(int i = 0; i < x; i++)
{
    ch.Add('o');
}