【发布时间】:2014-04-28 23:22:59
【问题描述】:
我正在尝试用 C# 为流程图建模。我将稍微简化一下类,但基本思想是给定的Step 指向另一个Step。我想要做的是在代码中的一个地方建立所有东西之间的联系。例如,我希望 step1 指向 step2 指向 step3
class Step
{
Step nextStep;
// Constructor
public Step(Step nextStep) { this.nextStep = nextStep; }
}
class Chart
{
private readonly Step step1;
private readonly Step step2;
private readonly Step step3;
public Chart()
{
step1 = new Step(step2);
step2 = new Step(step3);
step3 = new Step(null);
}
}
static void main()
{
Chart myChart = new Chart();
}
这编译得很好,但是如果 nextStep 对象还没有被实例化,那么在实例化时引用就会丢失。
在本例中,step1 的构造函数传递给 step2,此时为 null。我希望当step2 被实例化时,step1 中的引用会正确地指向新创建的step2,但事实并非如此。
看起来我需要先实例化所有对象,然后返回并通过 setter 或其他方式设置链接。这是正确的方法吗?或者可以像我尝试的那样在构造函数中完成吗?
【问题讨论】:
-
我很惊讶这个编译因为你在实例化 step1 时使用了一个未初始化的变量(step2)
-
它没有为我编译... ------ 构建开始:项目:ConsoleApplication3,配置:调试 x86 ------ D:\Projects\Test\Console\ ConsoleApplication3\ConsoleApplication3\Program.cs(22,30):错误 CS0165:使用未分配的局部变量 'step2' D:\Projects\Test\Console\ConsoleApplication3\ConsoleApplication3\Program.cs(23,30):错误 CS0165:使用未分配的局部变量“step3”
-
@Mick - 抱歉。我试图将其归结为简化,但略有不同。我将修改我的代码示例。
标签: c# instantiation