对象和集合初始化程序-自赋值

本文关键字:赋值 程序 初始化 集合 对象 | 更新日期: 2023-09-27 18:29:01

我在程序中使用对象和集合初始化器,并思考如何获得下面的示例。

Orders.Add(new Order()
                {
                  id = 123,
                  date = new datetime(2012,03,26)
                  items = new OrderItems()
                          { 
                             lineid = 1,
                             quantity = 3,
                             order = ?? // want to assign to current order.
                          }
                 }

如何将新创建的订单分配给订单项目?

对象和集合初始化程序-自赋值

您在这里尝试的是不可能的。不能引用从对象初始值设定项主体中构造的对象。您需要将其分解为一组单独的步骤

var local = new Order() {
  id = 123,
  date = new datetime(2012, 03, 26);
};
local.items = new OrderItems() {
  lineid = 1;
  quantity = 3;
  order = local;
};
Orders.Add(local);

如果Order.items是一个属性,您可以在属性设置器中放入类似的内容

public class Order
{
    private OrderItems _items;
    public OrderItems items
    {
        get { return _items; }
        set
        {
            _items = value
            _items.order = this
        }
    }
}

然后你可以从初始值设定项中取出顺序:

Orders.Add(new Order()
           {
              id = 123,
              date = new datetime(2012,03,26)
              items = new OrderItems()
                      { 
                         lineid = 1,
                         quantity = 3,
                      }
             }