【发布时间】:2016-01-18 17:51:40
【问题描述】:
我认为这是正确的问题/方法:
我有一个坐标列表 (x,y) 和一个包含 X 和 Y 的对象 (Location);然后,我有一个函数可以检查每个相邻位置,并将它们与我的列表项(我转换为锯齿状数组)进行比较
static List<Location> GetWalkableAdjacentSquares(int x, int y, PointWithID [][]Map, Location target)
{
var proposedLocations = new List<Location>()
{
new Location { X = x, Y = y - 1 },
new Location { X = x, Y = y + 1 },
new Location { X = x - 1, Y = y },
new Location { X = x + 1, Y = y },
};
return proposedLocations.Where(l => Map[l.X][l.Y].value == 0).ToList();
}
(0表示开放路径)
现在,我的列表是一个简单的列表,因此我有一个错误:
public static List<PointWithID> map = new List<PointWithID>();
所以我需要以这种方式进入列表(我猜):
public static List<List<PointWithID>> map = new List<List<PointWithID>>();
我的问题是:
如何以这种方式将项目添加到列表中?
当然常规方式是行不通的:
private void addItemsToMap()
{
try
{
foreach (PointWithID open in NewMapToShow.openPath)
{
map.Add(open);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
有什么帮助吗?
【问题讨论】:
-
list[1].Add,或者你想添加的任何列表。
-
或创建一个“内部列表”实例,像往常一样填充它,然后将该内部列表添加到外部列表中。
-
似乎
map应该是某种类型的字典,例如Dictionary<Tuple<int,int>, PointWithID>,或者如果您覆盖Location的Equals和GetHashCode,您可以使用Dictionary<Location, PointWithID>。
标签: c# list multidimensional-array windows-phone-8.1