[英]How to assign to a jagged array?
我正在寫一個簡短的程序,最終將連接四個。
有一部分不起作用。 我在第16行聲明了一個鋸齒狀數組:
char[][] board = Enumerable.Repeat(Enumerable.Repeat('-', 7).ToArray(), 7).ToArray();
我認為這看起來像這樣:
-------
-------
-------
-------
-------
-------
-------
當我這樣做時board[5][2] = '*'
我得到了
--*----
--*----
--*----
--*----
--*----
--*----
--*----
而不是我想要的:
-------
-------
-------
-------
-------
--*----
-------
它如何運行(輸出應該只有一個星號):
你正在以錯誤的方式創建你的鋸齒狀陣列!
char[][] board = Enumerable.Repeat(Enumerable.Repeat('-', 7).ToArray(), 7).ToArray();
Enumerable.Repeat
將創建一個包含一個重復值的序列。 因此,您將創建一個char [] [],其中每個數組都將指向相同的引用。 在這種情況下,當您更改其中一個陣列時,您將更改所有陣列。
你需要以這種方式創建鋸齒狀數組,數組[5] [2]只會改變第5個數組:
char[][] array = Enumerable.Range(0, 7).Select(i => Enumerable.Repeat('-', 7).ToArray()).ToArray();
array[5][2] = '*';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.