почему я сталкиваюсь с ошибкой index out of range в этом коде

#c#

#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 и так далее..
но то, что я получаю, это ошибка index out of range.

Комментарии:

1. new char[] {} создает массив размером 0, поэтому для ваших o нет места. Вам нужно создать его таким образом, чтобы он был достаточно большим, чтобы содержать нужное вам количество o.

2. При итерации по массиву обычно лучше использовать Length свойство: for (int i = 0; i < ch.Length; i )

3. спасибо за помощь .. это действительно помогло.

Ответ №1:

В 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');
}