Mil*_*iez 6 c# arrays object-initializers
我有这两个班:
class Customer
{
public string Name;
public string City;
public Order[] Orders;
}
class Order
{
public int Quantity;
public Product Product;
}
Run Code Online (Sandbox Code Playgroud)
然后在Main我做以下事情:
Customer cust = new Customer
{
Name = "some name",
City = "some city",
Orders = {
new Order { Quantity = 3, Product = productObj1 },
new Order { Quantity = 4, Product = productObj2 },
new Order { Quantity = 1, Product = producctObj3 }
}
};
Run Code Online (Sandbox Code Playgroud)
但是我无法初始化数组... with a collection initializer.而且我知道这是可能的string[] array = { "A" , "B" };,对我而言看起来是一样的......
当然我可以制作单独的对象Order,将它们放在一个数组然后分配给它Orders,但我不喜欢这个想法.
在这种情况下,如何实现干净且代码较少的解决方案?
Eug*_*kal 10
C#不为对象初始化提供JSON样式表示法,因为它是强静态类型语言,不使用主动类型推断.new Order[]在使用初始化代码之前,必须调用数组构造函数():
Customer custKim = new Customer
{
Name = "some name",
City = "some city",
Orders = new Order[]{
new Order { Quantity = 3, Product = productObj1 },
new Order { Quantity = 4, Product = productObj2 },
new Order { Quantity = 1, Product = producctObj3 }
}
};
Run Code Online (Sandbox Code Playgroud)
吉荣和尤金提供了一些很好的选择,但事实是,你的CAN使用,如果你使用泛型列表,收藏等类型,但不能用简单的数组,你在你的描述中提供的语法.
因此,如果您将Customer类定义为:
class Customer
{
public Customer()
{
Orders = new List<Order>();
}
public string Name;
public string City;
public List<Order> Orders;
}
Run Code Online (Sandbox Code Playgroud)
您可以首先使用您想要使用的语法:
Customer cust = new Customer
{
Name = "some name",
City = "some city",
Orders = {
new Order { Quantity = 3, Product = productObj1 },
new Order { Quantity = 4, Product = productObj2 },
new Order { Quantity = 1, Product = producctObj3 }
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |