我正在尝试将神经网络的一些C ++代码翻译成C#。我首先从1993年的一本书中获取了C ++代码并运行它。然后使用STL翻译它并再次运行。现在我正试图用Visual Web Developer 2008 Express将它变成C#。
原始代码使用“朋友”类,我只是想做同样的事情,使所有内容都“公开”。
以下代码编译但在运行时仅提供空引用:
public class ineuron
{
public Double weight, activation;
public ineuron(Double set_wt)
{
weight = set_wt;
}
...
public class netwrk
{
public oneuron onrn;
public ineuron in1, in2, in3, in4;
public netwrk( Double inp_1, Double inp_2, Double inp_3, Double inp_4 )
{
ineuron in1 = new ineuron(inp_1);
ineuron in2 = new ineuron(inp_2);
...
以后,在按下按钮调用的一些代码中:
netwrk ntw = new netwrk(i_n1, i_n2, i_n3, i_n4);
不幸的是,尝试使用ntw.in1.activation
等会导致空引用运行时错误。
我忘了做什么?
巴尼
答案 0 :(得分:4)
执行此操作时:
ineuron in1 = new ineuron(inp_1);
声明一个新的局部变量,当构造函数完成时它会消失。
如果您想引用班级成员in1
,请转到:
in1 = new ineuron(inp_1);
答案 1 :(得分:1)
您正在失去netwrk
的{{1}}个对象的范围。
inueron