最近,我被Concat
的(在我看来太常用)叮咬了,返回的是结果,而不是附加到列表本身。
例如。
List<Control> mylist=new List<Control>;
//.... after adding Controls into mylist
MyPanel.Controls.Concat(mylist); //This will not affect MyPanel.Controls at all.
MyPanel.Controls=MyPanel.Controls.Concat(mylist); //This is what is needed, but the Controls reference can not be reassigned (for good reason)
那么,还有其他方法来组合两个列表,这些列表在集合引用为只读时将起作用吗?
用foreach做到这一点的唯一方法是吗?
foreach(var item in mylist){
MyPanel.Controls.Add(item);
}
没有foreach的更好方法吗?
最佳答案
许多集合都有一个AddRange方法winforms ControlCollection is one of them。
MyPanel.Controls.AddRange(mylist.ToArray());
这样做的好处是告诉容器您将立即添加许多控件,因此它可能会延迟布局步骤,直到完成添加所有控件为止。
关于c# - IEnumerable <T> .Concat —是否可以在不更改引用的情况下进行替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2531458/