【发布时间】:2015-07-10 10:24:02
【问题描述】:
此代码已更新。 机器人.cs:
struct state systemcheck()
{
state stateInfo = new state();
public double x,y,z;
}
Main.cs:
public state stateInfo;
private readonly Sub cpnew;
public Main()
{
InitializeComponent();
cpnew = new Sub(this);
}
子.cs:
public state systinfo;
private readonly Main main;
public Sub(Main main)
{
InitializeComponent();
this.main = main;
systinfo = this.main.stateInfo;
}
这里,systinfo.X 提供了一个空值。但是mainfrm.stateInfo.X 提供了正确的值,但会引发 marshal-by-reference 类警告。
初始化 systinfo 的正确方法是什么? state 的值是从外部连接的机器人获得的。
【问题讨论】:
-
请提供一个完整、有效的例子。
public void state systinfo显然无效,并且您的示例的其他方面很难理解。如果您可以遵循 .NET 命名约定,也会更清楚。 -
从
public Sub(ref Main main)中删除ref。用 C++ 的说法,你正在用你的代码传递一个指向Main的指针,这不是你想要在这里做的。 -
@DavidArno:
public Sub(ref Main main)是在我实现 `cpnew = new Sub(ref main); 时自动构建的` 此外,当我尝试修改它时它会引发错误。