使用此类代码编写程序:
var subtree = new Tree<int>(5, EnumeratorOrder.BreadthFirstSearch) { 1, 2 };
var tree = new Tree<int>(7, EnumeratorOrder.BreadthFirstSearch) { subtree, 10, 15 };
我不能理解{ 1, 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初始化程序允许您在初始化实现IEnumerable的集合类或具有Add扩展方法的类时指定一个或多个元素初始值设定项。元素初始值设定项可以是简单值,表达式或对象初始值设定项。通过使用集合初始值设定项,您不必在源代码中指定对类的Add方法的多个调用;编译器添加了调用。