C#对象初始化

时间:2015-10-11 19:16:16

标签: c#

使用此类代码编写程序:

var subtree = new Tree<int>(5, EnumeratorOrder.BreadthFirstSearch) { 1, 2 };

var tree = new Tree<int>(7, EnumeratorOrder.BreadthFirstSearch) { subtree, 10, 15 };

我不能理解{ 1, 2 }是什么意思?

2 个答案:

答案 0 :(得分:5)

  

我不能理解{1,2}

的含义

{1, 2}Collection Initializers

它们代表

的简写版本
var temp = new Tree<int>(5, EnumeratorOrder.BreadthFirstSearch);
temp.Add(1);
temp.Add(2);

var subtree = temp;

关于temp的初始分配的注意事项:分配的含义是评估左侧,评估右侧,进行分配。评估权利会产生副作用,并且必须在作业效果之前订购这些效果。请参阅评论以进行全面讨论。

答案 1 :(得分:1)

这是collection initializer

  

Collection初始化程序允许您在初始化实现IEnumerable的集合类或具有Add扩展方法的类时指定一个或多个元素初始值设定项。元素初始值设定项可以是简单值,表达式或对象初始值设定项。通过使用集合初始值设定项,您不必在源代码中指定对类的Add方法的多个调用;编译器添加了调用。