Ear*_*rlz 2 c# collections ienumerable concatenation
我最近被(在我看来太常见了)得到了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)
Run Code Online (Sandbox Code Playgroud)
那么,当集合引用是只读时,还有其他一些组合两个列表的方法吗?
使用foreach是唯一的方法吗?
foreach(var item in mylist){
MyPanel.Controls.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
没有foreach会有更好的方法吗?
许多集合都有一个AddRange方法,winforms ControlCollection就是其中之一.
MyPanel.Controls.AddRange(mylist.ToArray());
Run Code Online (Sandbox Code Playgroud)
这有利于告诉容器您将同时添加许多控件,因此它可能会延迟布局步骤,直到完成添加所有控件.
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |