一次性设置循环引用

时间:2015-02-03 17:00:32

标签: c#

鉴于这两个类:

public class class1
{
  public class2 class2parameter { get; set; }
}

public class class2
{
  public class1 class1parameter { get; set; }
}

我可以像这样创建class1的实例:

  var myclass1 = new class1()
  {
    class2parameter = new class2()
  };

但是这样做,是否可以将class2的class1parameter设置为等于我当前正在创建的class1的实例?

我不能这样做:

  var myclass1 = new class1()
  {
    class2parameter = new class2()
    {
      class1parameter = myclass1
    }
  };

因为"不能使用本地变量' myclass1'在宣布之前#34;

有没有比这更好的方法:

  var myclass1 = new class1()
  {
    class2parameter = new class2()
  };
  myclass1.class2parameter.class1parameter = myclass1;
}

我更愿意在一次调用中创建并填充class1和class2。

3 个答案:

答案 0 :(得分:3)

当你说"一个单一的电话"无论如何,这并不是真的发生在引擎盖下。但是,更简洁的方法是:

var myclass1 = new Class1();
var myclass2 = new Class2();
myclass1.class2parameter = myclass2;
myclass2.class1parameter = myclass1;

在我看来,这比许多嵌入式语句更容易阅读/理解。

答案 1 :(得分:1)

你可以这样做:

  var myclass2 = new class2() { class1parameter = new class1() };
  var myclass1 =  class2.class1parameter;
  class1.class2parameter = class2;

答案 2 :(得分:0)

你已经拥有的答案很好。你不需要更好的方法。

如果你想让它看起来更加对称,你可以这样做

var myclass1 = new class1();
var myclass2 = new class2();
myclass1.class2parameter = myclass2;
myclass2.class1parameter = myclass1;