[問題] 多維陣列的Resize用法?

看板C_Sharp (C#)作者 (以光為名)時間13年前 (2012/06/19 00:28), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
想設定一個二維陣列,但一開始還無法知道要有多大的大小, 上網Google了一下,C#好像沒有類似C++的動態記憶體配置, 但是可以先設定小陣列,再用Resize這個指令改大小。 我的程式是這樣子的: int size = 1; //陣列想要的長度,先定1,之後有程式會確定需要多大 int[,] arr = new int[1, 1]; //主角陣列 ~一陣程式碼後,確定size的值~ Array.Resize(ref arr, [size,size]); ↑↑↑↑↑↑↑ 就是這裡! 照邏輯上是這樣寫,但編譯器跑不過。 如果是個一維陣列,直接塞size下去就過了,但二維顯然是有比較特殊的寫法?! 嘗試了幾個寫法都是錯誤,只好上來請益看看...... 懇請板上高手賜教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.162.148

06/19 00:44, , 1F
似乎只能自己重新配置+複製元素..
06/19 00:44, 1F
不太懂重新配置的意思@@? 因為一維陣列很輕易的過了,讓我覺得二維陣列照理來說也行的通?! 只是猜測...可以解說的詳細一點嗎QQ ※ 編輯: stu87616 來自: 1.162.162.148 (06/19 01:54)

06/19 01:59, , 2F
你那邊覺得照邏輯是這樣寫,C#沒有 [size,size] 這種語法吧
06/19 01:59, 2F

06/19 02:00, , 3F
Resize這方法不支援多維陣列,你只能建新的然後Copy
06/19 02:00, 3F

06/19 02:03, , 4F
另外C#的new就是動態配置,你要的就 new int[size,size]就好
06/19 02:03, 4F
原來是這樣, 我懂了, 感謝 還在用C語言的想法寫C#的東西,忘了直接new這種乾脆的用法呢 ※ 編輯: stu87616 來自: 1.162.162.148 (06/19 02:21)

06/19 10:17, , 5F
或是改用List之類
06/19 10:17, 5F

06/19 11:41, , 6F
我沒研究過效能,不然用一維陣列的一維陣列應該也可?
06/19 11:41, 6F

06/19 22:51, , 7F
建議用Collection相關類別
06/19 22:51, 7F

06/19 22:59, , 8F
不建議Collection旗下的東西模擬多維陣列,如:
06/19 22:59, 8F

06/19 23:01, , 9F
List<List<int> > 這種的物件,並沒有如Array那樣有著取
06/19 23:01, 9F

06/19 23:01, , 10F
得Bound的能力。當然有另外包起來的話就另當別論了..
06/19 23:01, 10F

06/19 23:05, , 11F
補充一下好了: List<List<int>>旗下的List<int>長度可能
06/19 23:05, 11F

06/19 23:05, , 12F
不同~
06/19 23:05, 12F
文章代碼(AID): #1FtrSa_w (C_Sharp)
文章代碼(AID): #1FtrSa_w (C_Sharp)