Я новичок в С#. Я пытаюсь усложнить следующую программу, но она дает ошибку, указанную в конце: я знаю, что делаю глупую ошибку. Любая помощь будет высоко оценена:
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();
Спасибо, Вирен
Вы не выделили место для 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). Другие разработчики будут благодарны вам за это
- ИЗМЕНИТЬ, мой плохой. Исправлена возможность его вызова. Пожалуйста, попробуйте следующее
Похоже, вам нужно объявить размер и тип массива myobjarray при его создании. На самом деле, похоже, что у вас уже есть этот код, вам просто нужно удалить символ комментария.
all_integer_IDs[] myobjarray = new all_integer_IDs[10]();
Вы никогда не создавали экземпляр своего массива, кажется, что вы прокомментировали эту часть.
Если вам нужен массив переменной длины, попробуйте вместо этого list < > .
Вы никогда не инициализируете myobjarray.
Вы объявляете myobjarray, но вы не присваиваете ему никакой памяти; как в: вы не инициализируете переменную.
Однако вы инициализируете элементы массива (с еще одним массивом), но вы не сохраняли память для самого myobjarray.
(Инициализация закомментирована)