c#怎么向二维数组添加元素
答案:3 悬赏:50 手机版
解决时间 2021-03-25 08:45
- 提问者网友:川水往事
- 2021-03-24 14:01
c#怎么向二维数组添加元素
最佳答案
- 五星知识达人网友:零点过十分
- 2021-03-24 14:22
int[,] queue = new int[0, 0]; 是不是初始化有问题呀,总共 0行0列,还要怎么想里面添加元素呢?
你说 每加入一个元素,数组长度+1 ,因为你定义的是 二位的,[x,y] 的长度是 x乘y,并且数组的 Length 长度属性是只读的,不允许修改。追问就像JS里面的push()方法,我想往数组里面添加元素,并且返回新数组。追答那在 queue 初始化的时候 new int[0, 0]; 长度就不可以写死,而要根据你的长度设定依据来设置。
要 像JS里面的push()方法,我想往数组里面添加元素,并且返回新数组 的话,直接用 List 或则 Dictionary ,之后再通过 ToArray() 方法转换并返回就行了
List 类型 和 Dictionary 类型都有 Add() 方法,可以当做 JS 里面的 push() 来使用.
你说 每加入一个元素,数组长度+1 ,因为你定义的是 二位的,[x,y] 的长度是 x乘y,并且数组的 Length 长度属性是只读的,不允许修改。追问就像JS里面的push()方法,我想往数组里面添加元素,并且返回新数组。追答那在 queue 初始化的时候 new int[0, 0]; 长度就不可以写死,而要根据你的长度设定依据来设置。
要 像JS里面的push()方法,我想往数组里面添加元素,并且返回新数组 的话,直接用 List
List 类型 和 Dictionary 类型都有 Add() 方法,可以当做 JS 里面的 push() 来使用.
全部回答
- 1楼网友:酒者煙囻
- 2021-03-24 16:12
二维数组必须初始化长度
如果只知道一个长度的话可以用 ArrayList[]
另外,
用datatable不行吗?
如果只知道一个长度的话可以用 ArrayList[]
另外,
用datatable不行吗?
- 2楼网友:思契十里
- 2021-03-24 15:01
int[,] queue = new int[0, 0];这个初始化0行0列 不能添加数据
int[,] queue = new int[x, y];---x是行个数---y是列个数
两种方式:
一 使用for循环
如 int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i {
for(int j=0; j {
DestArray[i][j] = SrcArray[i][j];
}
}
二 使用内存操作函数来提高效率
二维数组初始化,将DestArray全部置为零
int DestArray[y][x];
for(int i=0; i {
memset(DestArray[i], 0, sizeof(int)*x);
}
这种方法效率更高。
还有将memset改为 memcpy 复制已有的数组。
int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i {
memcpy(DestArray, SrcArray, sizeof(int)*x);
}
以上两个例子都是考虑了二维数组时动态生成时的情况
因为内存不连续,需要用for循环来对每个块的内存赋值
假如是程序源码中已定义大小且连续的内存,可以不需要for循环直接调用这两个函数,例如:
int DestArray[100][100];
int SrcArray[100][100];
memcpy(DestArray, SrcArray, sizeof(int)*100*100);
memset(DestArray, 0, sizeof(int)*100*100);追问
这样可以吗?
int[,] queue = new int[x, y];---x是行个数---y是列个数
两种方式:
一 使用for循环
如 int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i
for(int j=0; j
DestArray[i][j] = SrcArray[i][j];
}
}
二 使用内存操作函数来提高效率
二维数组初始化,将DestArray全部置为零
int DestArray[y][x];
for(int i=0; i
memset(DestArray[i], 0, sizeof(int)*x);
}
这种方法效率更高。
还有将memset改为 memcpy 复制已有的数组。
int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i
memcpy(DestArray, SrcArray, sizeof(int)*x);
}
以上两个例子都是考虑了二维数组时动态生成时的情况
因为内存不连续,需要用for循环来对每个块的内存赋值
假如是程序源码中已定义大小且连续的内存,可以不需要for循环直接调用这两个函数,例如:
int DestArray[100][100];
int SrcArray[100][100];
memcpy(DestArray, SrcArray, sizeof(int)*100*100);
memset(DestArray, 0, sizeof(int)*100*100);追问
这样可以吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯