2014-10-01 5 views
-3

Я только что попробовал запустить некоторый код с массивами и простой записью, и я получил ОШИБКУ «System.IndexOutOfRangeExecption» и еще несколько строк в тарабарщине.System.IndexOutOfRangeExecption ERROR - C#

Код (простой):

static void Main(string[] args) 
    { 

     // מטרת התכנית היא למצוא את שמו של התלמיד על פי מקום הישיבה שלו, וההפך 
     // נשתמש במערך בשם Places. 

     string[,] places = new string [3,3]; 
     places[0, 0] = "Me & Dori"; 
     places[0, 1] = "Me & Dori"; 
     places[0, 2] = "Me & Dori"; 
     places[0, 3] = "Me & Dori"; 
     places[1, 0] = "Me & Dori"; 
     places[1, 1] = "Me & Dori"; 
     places[1, 2] = "Me & Dori"; 
     places[1, 3] = "Me & Dori"; 
     places[2, 0] = "Me & Dori"; 
     places[2, 1] = "Me & Dori"; 
     places[2, 2] = "Me & Dori"; 
     places[2, 3] = "Me & Dori"; 
     places[3, 0] = "Me & Dori"; 
     places[3, 1] = "Me & Dori"; 
     places[3, 2] = "Me & Dori"; 
     places[3, 3] = "Me & Dori"; 

     Console.WriteLine(places[1, 3]); 
    } 

* Я не знаю, C# хорошо, все еще учусь ... так что я предполагаю, что его что-то я забыл написать.

ответ

1

Если вы объявляете массив в C# как это:

string[,] places = new string [3,3]; 

у вас есть 9 элементов в этом массиве, индексация, начиная с 0,0 и последний 2,2

И при попытке обратиться к элементу в 2,3 он будет бросать Exception

places[2, 3] = "Me & Dori"; 
2

Размер вашего массива 3x3, а так как массивы C# основаны на 0, ваш массив заканчивается на 2,2.

Вы должны установить массив 4x4 для вашего кода для работы:

string[,] places = new string [4,4]; 

Или вы должны удалить настройки верхних границ коды.

+0

@Omer: нужна дополнительная помощь? Если нет, поскольку вы новичок, пожалуйста, не забудьте принять наиболее понравившийся вам ответ. –

0

Максимальные индексы вашего массива: places[2, 2]. Вам нужно string[,] places = new string[4,4]; для того, чтобы использовать

places[0, 3] = "Me & Dori"; 
places[1, 3] = "Me & Dori"; 
places[2, 3] = "Me & Dori"; 
places[3, 0] = "Me & Dori"; 
places[3, 1] = "Me & Dori"; 
places[3, 2] = "Me & Dori"; 
places[3, 3] = "Me & Dori"; 
1
new String[3,3] 

3 указывает на количество измерений. Массивы основаны на 0. Таким образом, вы создаете три измерения. 0, 1 и 2. Вы пытаетесь установить значения в четвертое измерение.

places[3, 0] = "Me & Dori"; 
places[3, 1] = "Me & Dori"; 
places[3, 2] = "Me & Dori"; 
places[3, 3] = "Me & Dori"; 

Это не работает, потому что нет четвертого измерения. Поэтому удалите эти строки или используйте:

string[,] places = new string [4,4]; 
+1

Чтобы уточнить терминологию, я могу заменить «размеры» на «размер», чтобы избежать путаницы. Технически я бы описал массив как имеющий * два измерения *, каждый из которых имеет * размер * из трех. – David

0

Вы объявляете массив 3x3, но пытаетесь присвоить ему данные 4x4. Чтобы исправить пример изменения к этому:

string[,] places = new string [4,4];