我是C#的新手,这是我的问题
class myClass
{
int start;
int end;
.......
}
class program
{
public void main()
{
myClass[] a= new myClass[10];
for (int i = 1; i < a.length; i++)
{
myClass b = new myClass();
a[i] = b;
a[i].start = 1;
... (keep populating)
...
}
console.writeline(a[1].start) // NO PROBLEM WITH THIS LINE, THE VALUE WAS OUTPUTED
subMethod(a);
}
public void subMethod(myClass[] a)
{
console.write(a[1].start); // NO PROBLEM WITH THIS LINE, OUTPUT NORMALLY
for (int i = 1; i < a.length, i++)
{
int h = a[i].start; ????? OBJECT NOT INSTANTIATED
}
}
}
错误如上所示,我很难理解。任何人都可以帮助我。提前致谢
答案 0 :(得分:11)
问题似乎出现在您尚未发布的代码中。
myClass[] a= new myClass[10];
// (populate this array)
我不知道你在那里写了什么,但它显然不起作用。它应该是这样的:
myClass[] a = new myClass[10];
for (int i = 0; i < a.Length; i++)
{
a[i] = new myClass();
}
答案 1 :(得分:2)
您已经实例化了一个数组,但是需要实例化数组中的每个对象。你没有在上面的例子中展示你是如何做到这一点的。
答案 2 :(得分:1)
请发布编译的代码。错误可能在于您的代码转录,因为此代码完全正常:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RandomArrayTest
{
class MyClass
{
public int start;
}
class Program
{
static void Main(string[] args)
{
MyClass[] a = new MyClass[10];
for(int i=1; i<a.Length; i++)
{
MyClass b = new MyClass();
a[i] = b;
a[i].start = 1;
}
MyFunction(a);
}
static void MyFunction(MyClass[] a)
{
for (int i = 1; i < a.Length; i++)
{
int h = a[i].start;
Console.WriteLine(h);
}
}
}
}