C # неназначенная ошибка локальной переменной

2

Я новичок в С#. Я пытаюсь усложнить следующую программу, но она дает ошибку, указанную в конце: я знаю, что делаю глупую ошибку. Любая помощь будет высоко оценена:

static void Main (строка [] args)       {

        IntPtr hCannedMessages = CannedMessagesInit();

        using (StreamReader sr = new StreamReader(CANNED_MESSAGE_FILE))
        {
            String line, sub;
            all_integer_IDs[] myobjarray;// = new all_integer_IDs[10];
            for (int c = 0; c < 10; c++)
            {
                myobjarray[c] = new all_integer_IDs();

            }
                line = sr.ReadLine();
                Console.WriteLine(line);

                if (line.Length > 15)
                {
                     sub = line.Remove(line.IndexOf(' ', 2));
                     Console.WriteLine("{0} \n",sub);

    myobjarray[0].setvalues((int)sub[2], (int)sub[3], (int)sub[4], (int)sub[5]);

Console.WriteLine( "{0}, {1}, {2}, {3}", myobjarray [0].m_messageID, myobjarray [0].m_messagetype, myobjarray [0].m_classID, myobjarray [0].m_categoryID);                   }

               Console.Read();
            sr.Close();
        }

    }
}

}

И класс находится в файле Class1.cs в том же проекте и выглядит следующим образом:

открытый класс all_integer_IDs   {

    public all_integer_IDs() 
    {

        setvalues(0, 0, 0, 0);

    }

    ~all_integer_IDs()
    {
    }

    public void setvalues (int messageID, int messagetype, int classID, int categoryID)
    {
        this.m_messageID = messageID;
        this.m_messagetype = messagetype;
        this.m_classID = classID;
        this.m_categoryID = categoryID;
    }

     public int m_messageID;
     public int m_messagetype;
     public int m_classID;
     public int m_categoryID;

}

Ошибка заключается в следующем: Использование неназначенной локальной переменной myobjarray в строке 55, которая копируется и вставляется ниже: myobjarray [c] = new all_integer_IDs();

Спасибо, Вирен

  • 0
    Я изменил свой ответ. Надеюсь, это поможет
Теги:

4 ответа

2
Лучший ответ

Вы не выделили место для myObjarray. Вы должны выделить его

Использование:

all_integer_IDs[] myobjarray = new all_integer_IDs[10];
for (int c = 0; c < 10; c++)
{
    myobjarray[c] = new all_integer_IDs();
}

в строке 55.

И используйте PascalCase для имен классов (в вашем случае, AllIntegerID). Другие разработчики будут благодарны вам за это

- ИЗМЕНИТЬ, мой плохой. Исправлена ​​возможность его вызова. Пожалуйста, попробуйте следующее

  • 0
    спасибо, Сэмюэль ... сейчас он работает отлично ... напишите еще несколько вопросов довольно скоро, так как я сейчас работаю над этим C # GUI .. надеюсь, у вас будет время ответить на них
  • 0
    Я постараюсь помочь вам, чем смогу. Удачи!
1

Похоже, вам нужно объявить размер и тип массива myobjarray при его создании. На самом деле, похоже, что у вас уже есть этот код, вам просто нужно удалить символ комментария.

all_integer_IDs[] myobjarray = new all_integer_IDs[10]();
  • 0
    Спасибо, ну я удалил комментарий. Теперь он выдает ошибку «Имя метода ожидается» в строке all_integer_IDs [] myobjarray = new all_integer_IDs [10] (); Также я попытался выполнить следующие действия с конструктором, но он также не работал: public all_integer_IDs () {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; }
  • 0
    Вы уверены, что пространства имен в обоих классах одинаковы?
Показать ещё 1 комментарий
0

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

Если вам нужен массив переменной длины, попробуйте вместо этого list < > .

  • 0
    Спасибо, ну я удалил комментарий. Теперь он выдает ошибку «Имя метода ожидается» в строке all_integer_IDs [] myobjarray = new all_integer_IDs [10] (); Также я попытался выполнить следующие действия с конструктором, но он также не работал: public all_integer_IDs () {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; }
0

Вы никогда не инициализируете myobjarray. Вы объявляете myobjarray, но вы не присваиваете ему никакой памяти; как в: вы не инициализируете переменную. Однако вы инициализируете элементы массива (с еще одним массивом), но вы не сохраняли память для самого myobjarray.
(Инициализация закомментирована)

  • 0
    Спасибо, ну я удалил комментарий. Теперь он выдает ошибку «Имя метода ожидается» в строке all_integer_IDs [] myobjarray = new all_integer_IDs [10] (); Также я попытался выполнить следующие действия с конструктором, но он также не работал: public all_integer_IDs () {m_messageID = 0; m_messagetype = 0; m_classID = 0; m_categoryID = 0; }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню