簡體   English   中英

如何分配鋸齒狀陣列?

[英]How to assign to a jagged array?

我正在寫一個簡短的程序,最終將連接四個。

到目前為止,它是pastebin

有一部分不起作用。 我在第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM