我是C#的新手。我试图编译以下程序,但最后会抛出一个错误:我知道我犯了一个愚蠢的错误。任何帮助将不胜感激:
static void Main(string [] 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;
}
错误如下: 在第55行使用未分配的局部变量'myobjarray',复制并粘贴在下面: myobjarray [c] = new all_integer_IDs();
谢谢,Viren
答案 0 :(得分: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)。其他开发人员会感谢你
- 编辑,我的坏。纠正了调用它的方式。请尝试以下
答案 1 :(得分:1)
看起来你需要在实例化时声明数组myobjarray的大小和类型。事实上,看起来你已经有了这个代码,你只需要删除注释符号。
all_integer_IDs[] myobjarray = new all_integer_IDs[10]();
答案 2 :(得分:0)
你从来没有实例化你的数组,好像你注释掉了那个部分。
如果你想要一个可变长度数组,请尝试一个列表&lt;&gt;代替。
答案 3 :(得分:0)
你永远不会初始化myobjarray。
你宣布myobjarray,但你没有为它分配任何记忆;如:你没有初始化变量。
你确实初始化了数组的元素(还有另一个数组),但你没有为myobjarray本身重新保存任何内存。
(初始化已注释掉)