2015-02-10 4 views
0

У меня есть следующий код:C# IndexOutOfRangeException при обращении в массиве ДАННЫЕ

String[] enteteSplit = new String[48]; 
enteteSplit = entete.Split(';'); 
enteteSplit[35] = enteteSplit[35].Replace(',', '.'); 

Где entete является строка. 3-я строка бросает исключение IndexOutOfRangeException, и я не мог разрешить это, любые идеи?

Большое спасибо.

+1

Ну, похоже, что в 'enteteSplit' меньше 36 элементов. –

+1

'enteteSplit' имеет менее 36 наименований. Ваша первая строка не имеет значения, так как 'Split()' просто возвращает новый массив. –

+0

Я также пробовал делать: String [] enteteSplit = entete.Split (';'); enteteSplit [35] = enteteSplit [35]. Заменить (',', '.'); И я проверил, что «entete» имеет более 35 ';' и он все еще не работает. Я также проверил, что «enteteSplit [35]» что-то в нем. – Stan

ответ

3

При вызове этой линии

enteteSplit = entete.Split(';'); 

вы фактически создавая массив, который содержит не более 48 элементов, но только те элементы, полученные разделив строку в точку с запятой.

Так что, если ваша строка

entete = "test;test1;test2"; 
enteteSplit = entete.Split(';'); 

результирующий массив имеет только три элемента, и, таким образом, пытаясь достичь 35-го элемента вызывает, за исключением IndexOutOfRange

Вам нужно ввести проверку безопасности здесь

if(enteteSplit.Length > 35) 
    enteteSplit[35] = enteteSplit[35].Replace(',', '.'); 
+0

Кажется, что добавление проверки безопасности разрешило мою проблему. Спасибо :) – Stan

 Смежные вопросы

  • Нет связанных вопросов^_^