Использование неназначенной локальной переменной (Очень простая функция со строковым массивом).Язык C # - PullRequest
2 голосов
/ 19 февраля 2012

Я посмотрел предыдущие вопросы, но это не помогло.У меня есть очень простая функция, написанная на c #.Это дает мне ошибку компилятора «Использование неназначенной локальной переменной 'linea'" (строка (2)).Что может быть не так?И можете сказать мне, как это исправить?

    public void llenarTabla()
    {

        int idx;
        string[] linea; (1)
        for (idx = 0; idx < numListas; idx++)
        {
            linea[0] = Convert.ToString(idx); // (2)
            switch(OrdenListas[idx]){
                case 0: linea[1] = "Crescente"; break;
                case 1: linea[1] = "Decrescente"; break;
                case 2: linea[1] = "Aleatorio"; break;
                default: linea[1] = "No especificado" ; break;
            }
            linea[2] = Convert.ToString(LongitudListas[idx]);
        }
    }

Я уже видел ссылку "Ошибка компилятора, если используется переменная, но она может быть не инициализирована. Но насколько я вижу переменную string [] (indexes: 0,1,2) инициализируется в каждом случае, кроме numlistas = 0 (numlistas является параметром класса и его значение должно быть> = 1).

Я также пытался изменить строку (1)и (2):

(1) List<string> linea;

(2) linea.Add(Convert.ToString(idx));

, но с той же ошибкой (когда я пытался изменить строку (1) и (2), я добавил в комментарии все следующие строки.

Спасибозаранее за каждую помощь

Ответы [ 4 ]

2 голосов
/ 19 февраля 2012

Вы объявили переменную типа string[] (массив строк), но не присвоили ей значение. Другими словами, переменная linea еще не инициализируется при использовании.

Ваша строка (1) должна выглядеть так:

string [] linea = new string[numListas];
2 голосов
/ 19 февраля 2012

Просто выполните:

string[] linea = new string[3];//3 is the length of your array
//you can store 3 elements in linea [0] [1] and [2]

См. Справочник MSDN для массивов в C #

1 голос
/ 19 февраля 2012

Изменить на это:

  public void llenarTabla()
    {

        int idx;
        List<string> linea=new List<string>();
        for (idx = 0; idx < numListas; idx++)
        {
            linea.Add(Convert.ToString(idx)); // (2)
            switch(OrdenListas[idx]){
                case 0: linea.Add("Crescente"); break;
                case 1:linea.Add("Decrescente"); break;
                case 2: linea.Add("Aleatorio"); break;
                default:linea.Add("No especificado" ); break;
            }
           linea.Add(Convert.ToString(LongitudListas[idx]));
        }
    }
1 голос
/ 19 февраля 2012

Проблема в том, что вы объявили переменную string[] linea, но вы никогда не инициализировали ее для определенного значения, прежде чем использовать ее в теле цикла for. Исходя из использования в цикле, вы хотите, чтобы оно имело 3 элемента, поэтому будет работать следующее

string[] linea = new string[3];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...