Sky*_*sky -1 c# null loops list
我有一个列表,并希望顺利迭代它,同时删除一个接一个元素.我以为我可以这样做:
List<Point> open = new List<Point>();
...
while (!(open == null))
{
Point p = open.RemoveAt(0);
...
Run Code Online (Sandbox Code Playgroud)
但是,我不希望它如何工作,从"不能隐式地将类型'void'转换为'Point'开头".但是,在删除它/使其无效之前,RemoveAt的调用是否应该指向P?
List.RemoveAt不会返回您要删除的项目.null当您删除所有项目时,也不会出现列表.它将变为空,即Count等于0.我建议你用Queue<T>而不是List<T>.因此,您将能够移除拳头添加的项目并同时获取它:
Queue<Point> open = new Queue<Point>();
while(open.Count > 0)
{
var point = open.Dequeue();
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果要使用列表,并删除第一项,则应按索引检索项目,然后才从列表中删除它:
List<Point> open = new List<Point>();
while (open.Count > 0) // or open.Any()
{
Point p = open[0];
open.RemoveAt(0);
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |