2017-06-17 40 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

也許我應該使用點字典,你覺得呢? –