我定义了以下类:
public class PerceptronNetwork : NetworkBase
{
Neuron perceptron { get; set; }
public PerceptronTrainer trainingMethod;
public PerceptronNetwork(Neuron aNeuron)
{
this.perceptron = aNeuron;
}
public double train(TrainingTemplate trainingTemplate, int extMaxGenerations)
{
// This is simple but the ideea is suposed to be that in larger networks here
// I do a foreach over the neurons
double error = this.trainingMethod.trainNetwork(trainingTemplate, perceptron,
extMaxGenerations);
return error;
}
}
每当我尝试使用main函数中的train方法时,我都会收到错误
Object reference not set to an instance of an object.
指向perceptron
对象。
尽管当我将鼠标悬停在函数调用trainingTemplate,perceptron和extMaxGenerations中的每个对象上时,它们似乎都指向正确的值。
我是否以某种方式声明或实例化了错误?
答案 0 :(得分:2)
确保实例化this.trainingMethod
。从您的代码来看似乎不是。
如果是,则必须显示完整的堆栈跟踪。
答案 1 :(得分:1)
传递null参数时不会抛出NullReferenceException
,当您尝试访问空引用上的成员属性/方法/字段时会抛出它。在您的情况下,这意味着this.trainingMethod
是null
。
如果trainNetwork
有验证码来验证传入的参数不是null,那么很可能会得到ArgumentNullException
,其中包含指示为空的参数的名称。
如果trainNetwork
尝试引用传入的空值的实例成员,则堆栈跟踪将来自该方法,而不是来自train
。