C# 尽管调试器显示对象C,但仍引发NullReferenceException#
我定义了以下类:C# 尽管调试器显示对象C,但仍引发NullReferenceException#,c#,nullreferenceexception,C#,Nullreferenceexception,我定义了以下类: public class PerceptronNetwork : NetworkBase { Neuron perceptron { get; set; } public PerceptronTrainer trainingMethod; public PerceptronNetwork(Neuron aNeuron) { this.perceptron = aNeuron; } public double
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;
}
}
每当我尝试使用主函数中的训练方法时,我都会得到错误
Object reference not set to an instance of an object.
指向感知器
对象
尽管如此,当我将鼠标悬停在函数调用trainingTemplate、perceptron和extMaxGenerations中的每个对象上时,它们似乎都指向正确的值
我是否以某种方式声明或实例化了错误的方法?请确保已实例化
此.trainingMethod
。从你的代码来看,它似乎不是
如果是,则必须显示完整堆栈跟踪。确保已实例化
此.trainingMethod
。从你的代码来看,它似乎不是
如果是,则必须显示完整堆栈跟踪。确保已实例化
此.trainingMethod
。从你的代码来看,它似乎不是
如果是,则必须显示完整堆栈跟踪。确保已实例化
此.trainingMethod
。从你的代码来看,它似乎不是
如果是,则必须显示完整的堆栈跟踪。传递null参数时不会引发
NullReferenceException
,而是在尝试访问null引用上的成员属性/方法/字段时引发。在您的情况下,这意味着此.trainingMethod
为null
如果trainNetwork
有验证代码来验证传入参数是否为空,则很可能会得到一个ArgumentNullException
,其中指明了空参数的名称
如果
trainNetwork
试图引用传入的空值上的实例成员,堆栈跟踪将源自该方法,而不是train
传递null参数时不会引发NullReferenceException
,而是在尝试访问null引用上的成员属性/方法/字段时引发。在您的情况下,这意味着此.trainingMethod
为null
如果trainNetwork
有验证代码来验证传入参数是否为空,则很可能会得到一个ArgumentNullException
,其中指明了空参数的名称
如果
trainNetwork
试图引用传入的空值上的实例成员,堆栈跟踪将源自该方法,而不是train
传递null参数时不会引发NullReferenceException
,而是在尝试访问null引用上的成员属性/方法/字段时引发。在您的情况下,这意味着此.trainingMethod
为null
如果trainNetwork
有验证代码来验证传入参数是否为空,则很可能会得到一个ArgumentNullException
,其中指明了空参数的名称
如果
trainNetwork
试图引用传入的空值上的实例成员,堆栈跟踪将源自该方法,而不是train
传递null参数时不会引发NullReferenceException
,而是在尝试访问null引用上的成员属性/方法/字段时引发。在您的情况下,这意味着此.trainingMethod
为null
如果trainNetwork
有验证代码来验证传入参数是否为空,则很可能会得到一个ArgumentNullException
,其中指明了空参数的名称
如果
trainNetwork
试图引用传入的空值上的实例成员,堆栈跟踪将源自该方法,而不是train
“指向感知器对象”到底是什么意思?在列车
中是否明确存在异常,或者在列车网络
中是否存在异常?(顺便说一句,养成遵守.NET命名约定的习惯是个好主意……并保持字段的私有性。)请在此处显示完整的堆栈跟踪。还有培训方法?在哪里初始化?我们看不到在哪里创建了aNeuron
(因此perceptron
)、trainingMethod
、trainNetwork
和trainingTemplate
。它们都可以是null
@OlivierJacot Descombes,在使用它们之前不会生成异常-在这种情况下,堆栈跟踪将指向trainNetwork
(或更低的方法)。您所说的“指向感知器对象”到底是什么意思?在列车
中是否明确存在异常,或者在列车网络
中是否存在异常?(顺便说一句,养成遵守.NET命名约定的习惯是个好主意……并保持字段的私有性。)请在此处显示完整的堆栈跟踪。还有培训方法?在哪里初始化?我们看不到在哪里创建了aNeuron
(因此perceptron
)、trainingMethod
、trainNetwork
和trainingTemplate
。它们都可以是null
@OlivierJacot Descombes,在使用它们之前不会生成异常-在这种情况下,堆栈跟踪将指向trainNetwork
(或更低的方法)。您所说的“指向感知器对象”到底是什么意思?在列车
中是否明确存在异常,或者在列车网络
中是否存在异常?(顺便说一句,养成遵守.NET命名约定的习惯是个好主意……并保持字段的私有性。)请在此处显示完整的堆栈跟踪。还有培训方法?在哪里初始化?我们看不到在哪里创建了aNeuron
(因此perceptron
)、trainingMethod
、trainNetwork
和trainingTemplate
。它们都可以是null
@OlivierJa