Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Intellisense在使用项[X,Y]时无法识别我的二维列表_C# - Fatal编程技术网

C# Intellisense在使用项[X,Y]时无法识别我的二维列表

C# Intellisense在使用项[X,Y]时无法识别我的二维列表,c#,C#,我正在尝试将一些旧的Delphi代码(dijkstra路径查找算法)转换为C#。我在Delphi中使用了数组,但由于C#不允许动态调整大小,我使用了二维列表 但我希望在Map[X,Y]上找到我的PathCoord类,VisualStudio一直告诉我“对于方法'this'不存在重载,它需要2个参数”。intellisense要么给我另一个列表的下拉列表,要么给我一个基本对象的四个选项非定义对象 我很可能忽略了一些非常明显的事情,但我已经看了好几个小时了,开始觉得我在盲目地盯着自己看 任何帮助都将

我正在尝试将一些旧的Delphi代码(dijkstra路径查找算法)转换为C#。我在Delphi中使用了数组,但由于C#不允许动态调整大小,我使用了二维列表

但我希望在Map[X,Y]上找到我的PathCoord类,VisualStudio一直告诉我“对于方法'this'不存在重载,它需要2个参数”。intellisense要么给我另一个列表的下拉列表,要么给我一个基本对象的四个选项非定义对象

我很可能忽略了一些非常明显的事情,但我已经看了好几个小时了,开始觉得我在盲目地盯着自己看

任何帮助都将不胜感激

public class PathCoord
{
    List<Point> PathTo;
    Color TheColor;
    double Cost;

    public PathCoord()
    {
        PathTo = new List<Point>();
        TheColor = Color.FromArgb(0, 0, 0, 0);
        Cost = 0f;
    }

}

public class PathEngine
{
    public List<List<PathCoord>> Map = new List<List<PathCoord>>();

    public void AddPathToPoint(Point newPoint, List<Point> PathTo, double Cost)
    {

        Map[newPointX, newPoint.Y].
    }
}
公共类PathCoord
{
列出路径;
颜色;
双重成本;
公共PathCoord()
{
PathTo=新列表();
颜色=颜色。来自argb(0,0,0,0);
成本=0f;
}
}
公共类路径引擎
{
公共列表映射=新列表();
public void AddPathToPoint(点新点、列表路径到、双倍成本)
{
Map[newPointX,newPoint.Y]。
}
}

这是最短的代码示例。我认为最好不要包含太多的代码,但如果需要,我会很高兴地包含整个

您的
Map
字段不是二维数组。看起来是这样的:

PathCoord[,]Map=newpathcoord[2,5];
不仅如此,您的
映射
根本不是一个数组,而是一个动态的
列表
集合。在C#中没有“多维列表”这类东西(至少在多维数组存在的意义上不是这样)

相反,您的
映射是一个嵌套列表或列表列表。因此,您需要使用“交错数组”方法,即使用多个索引器-每个级别的列表对应一个索引器:

Map[newPointX][newPointY]=。。。;

很确定,这是因为您需要执行
[]]
而不是
[,]
。找到一个好的副本。感谢Abion47和gunr2171的帮助。我也试过了,但昨天仍然出现同样的编译器错误。不过现在它可以工作了,我想可能需要重新启动VS。遗憾的是,我没有足够的声誉来支持你的回答。