作者stu87616 (以光为名)
看板C_Sharp
标题[问题] 多维阵列的Resize用法?
时间Tue Jun 19 00:28:17 2012
想设定一个二维阵列,但一开始还无法知道要有多大的大小,
上网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
1F:→ s3748679:似乎只能自己重新配置+复制元素.. 06/19 00:44
不太懂重新配置的意思@@?
因为一维阵列很轻易的过了,让我觉得二维阵列照理来说也行的通?!
只是猜测...可以解说的详细一点吗QQ
※ 编辑: stu87616 来自: 1.162.162.148 (06/19 01:54)
2F:→ ssccg:你那边觉得照逻辑是这样写,C#没有 [size,size] 这种语法吧 06/19 01:59
3F:→ ssccg:Resize这方法不支援多维阵列,你只能建新的然後Copy 06/19 02:00
4F:→ ssccg:另外C#的new就是动态配置,你要的就 new int[size,size]就好 06/19 02:03
原来是这样, 我懂了, 感谢
还在用C语言的想法写C#的东西,忘了直接new这种乾脆的用法呢
※ 编辑: stu87616 来自: 1.162.162.148 (06/19 02:21)
5F:→ bbcust:或是改用List之类 06/19 10:17
6F:→ optimist9266:我没研究过效能,不然用一维阵列的一维阵列应该也可? 06/19 11:41
7F:推 horngsh:建议用Collection相关类别 06/19 22:51
8F:→ s3748679:不建议Collection旗下的东西模拟多维阵列,如: 06/19 22:59
9F:→ s3748679:List<List<int> > 这种的物件,并没有如Array那样有着取 06/19 23:01
10F:→ s3748679:得Bound的能力。当然有另外包起来的话就另当别论了.. 06/19 23:01
11F:→ s3748679:补充一下好了: List<List<int>>旗下的List<int>长度可能 06/19 23:05
12F:→ s3748679:不同~ 06/19 23:05