2017-06-17 47 views
0

我正在尝试用C#构建坐标为-20至20的x轴和y轴地图。此刻我已经定义了我的范围(如下图所示),并且我正在使用每个循环来遍历这两个列表,但是我无法用任何东西填充它们,因为当我尝试并重新分配数组值时,它会引发错误。我想用点画一张地图。我的逻辑错了吗?试图构建一个包含二维数组的地图

IEnumerable<int> squares = Enumerable.Range(-20, 20); 
IEnumerable<int> cirles = Enumerable.Range(-20, 20); 

int [][] arrays = new int[squares.Count()][cirles.Count()]; 

      foreach (var shape in squares) 
      { 

       foreach (var sha in cirles) 

\\Construct map 

程序抛出类型错误,因为它要我打印出交错数组到这样INT定义它[] []数组=新INT [squares.Count()] [];

的错误是无效的等级或符,

+0

确切位置在哪里,你停留在? –

+0

我建议先阅读这篇文章:https://stackoverflow.com/questions/12567329/multidimensional-array-vs –

+0

所以你“不能填充它们”。为什么?你收到一条错误消息?在你的问题中加入消息。 –

回答

1

正如在评论中提到已经你可能试图在这里使用了错误类型的数组。好像你会更好,简单地用一个二维数组,因为你的尺寸是固定的:

int[,] array = new int[squares.Count(), circles.Count()]; 

如果你想坚持交错数组一定要了解这首:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/jagged-arrays

锯齿形阵列无法按照您尝试的方式进行初始化。我想这是因为它不会让人觉得很有意义。锯齿形数组允许您为每个包含的数组拥有不同的维度(您不需要)。

不过,如果你想使用交错数组,然后使用下面的代码,而不是用于初始化:

int[][] arrays = new int[squares.Count()][]; 
    for (int i = 0; i < arrays.Length; i++) 
    { 
     arrays[i] = new int[circles.Count()]; 
    } 
+0

这实际上非常接近我回答的问题,我想保留我的原始坐标(-20,20),所以我可以使用它们来测量距离自定义点类的点的距离。 –

+0

如果你想有一个负数索引的数组......这是不可能的。但是,您可以切换到自定义类而不是原始int:https://stackoverflow.com/questions/15730346/array-with-negative-indexes。另外,如果你不关心性能问题,你可以切换到使用字典,而不是支持否定键的数组。 – dnickless

+0

也许我应该使用点字典,你觉得呢? –