好的,我已经制定了另一个程序来更清楚地解决我的问题。我有一个包含int数组的对象数组,我试图从元素神经元1打印索引[0]。但是,我在第'' Console.WriteLine(ex.neuron [0])'行中获得了一个空引用异常。 我的代码如下。
namespace ConsoleApplication5
{
class Program
{
static void Main()
{
ex ex = new ex();
int[]neuron1 = new int[5];
int[]neuron2 = new int[5];
int[]neuron3 = new int[5];
int[]neuron4 = new int[5];
int[]neuron5 = new int[5];
object[,] array1 = new object[2,2];
array1[0, 0] = ex.neuron1;
neuron1[0] = 1;
array1[0, 1] = neuron2;
neuron2[1] = 1;
test(array1);
}
static void test(object[,] array1)
{
ex ex = new ex();
Console.WriteLine(ex.neuron1[0]);
Console.ReadLine();
}
}
}
我有一个课程在这里设置和设置neuron1:
static void test(object[,] array1)
{
ex ex = new ex();
Console.WriteLine(ex.neuron1[0]);
Console.ReadLine();
}
}
}
我认为异常发生是因为我在定义为包含值1之前访问ex.neuron [0]。所以我的问题是如何在设置为保持值1之后访问ex.neuron [0]。感谢。
答案 0 :(得分:1)
你永远不会设置ex.neuron1,替换这些行
int[] neuron1 = new int[5];
与
ex.neuron1 = new int[5];
答案 1 :(得分:1)
您可能需要在每个函数中创建ex
的新实例,而您可能只需要传递它。此外,您从未在实例本身上设置neuron
字段。以下是代码的简化版本:
static void Main()
{
// define it here
ex ex = new ex();
// initialize the neuron fields (although you should probably do this
// in the constructor for ex
ex.neuron1 = new int[5];
ex.neuron2 = new int[5];
ex.neuron3 = new int[5];
ex.neuron4 = new int[5];
ex.neuron5 = new int[5];
// set some neuron array values
ex.neuron1[0] = 1;
ex.neuron2[1] = 1;
// pass the instance along to test
test(ex);
}
static void test(ex ex)
{
// access the array value here
Console.WriteLine(ex.neuron1[0]);
Console.ReadLine();
}