c#怎么向二维数组添加元素

如题:假设我有一个数组 int[,] queue = new int[0, 0];
现在我想向里面加入若干个元素,,我每加入一个元素,数组长度+1
请各路高手说的仔细点,感谢!!

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<y; i++)
{
for(int j=0; j<x; j++)
{
DestArray[i][j] = SrcArray[i][j];
}
}

二 使用内存操作函数来提高效率
二维数组初始化,将DestArray全部置为零
int DestArray[y][x];
for(int i=0; i<y; i++)
{
memset(DestArray[i], 0, sizeof(int)*x);
}
这种方法效率更高。
还有将memset改为 memcpy 复制已有的数组。
int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i<y; 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);追问

      

这样可以吗?

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-14
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() 来使用.

本回答被提问者采纳
第2个回答  2014-09-25
二维数组必须初始化长度

如果只知道一个长度的话可以用 ArrayList[]

另外,
用datatable不行吗?

c#怎么向二维数组添加元素
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<y; i++){ for(int j=0; j<...

c#怎么向二维数组添加元素
每加入一个元素,数组长度+1 ,因为你定义的是 二位的,[x,y]的长度是 x乘y,并且数组的 Length 长度属性是只读的,不允许修改。

求!C# 循环语句给二维数组赋值问题解决方法
先用List list=new list \/\/ 其中T是存放的类型。list.Add就添加内容嘛。最后:T[]listArray=list.ToArray();\/\/ 这里就得到了你需要的数组了。不过你要弄2维数组干什么?是把C,存在一个,D存在一个么。方法是一样的,看你怎么用而已。

C#如何定义二维数组
定义C#中的二维数组,首先要明确数组的维度,即数组的行和列。例如,要定义一个表示一年中各月天数的二维数组,我们可以这样写:int[][] date = new int[12][];这里,数组的维度为12行,每一行的元素个数由具体月份决定。接下来,根据月份的不同,我们可以给每一行的元素赋值。比如,我们可以使用s...

c#如何定义一个二维数组,先声明一维
1、首先打开visualstudio开发工具,创建一个控制台应用程序,用于演示二维数组的定义方式。2、在Program.cs文件中,定义二维数组,比如,定义一个两行两列的数组:int[,]arr=newint[2,2]。3、上一步只是定义了一个二维数组,并未给元素赋值,默认编译器都会为int类型的数组全部初始化为0。要给元素...

C# 动态二维数组赋值
int[,] i1=new int[,]是错误写法,编译器提醒有错。动态数组可用List泛型类,可以用如下办法构成动态的2维数组并赋值。List<int[]> i1 = new List<int[]>();int[,] i2=new int[,] {{1,1},{2,2},{3,3},{4,4}};int [] i3=new int[2];for (int j = 0; j < 4; j...

C#中 arraylist 能添加二维数组吗?如果能的话要怎么初始化?
ArrayList本身只支持1维,如果要实现2维的话,一种做法是ArrayList里面再放ArrayList。ArrayList list = new ArrayList();for(int i = 0; i < 5; i++){ list.Add(new ArrayList());} 可以这样访问:object obj = list[a][b];

c#定义N*N二维数组,求对角线的和
在C#中,定义N*N的二维数组可以使用以下代码:int[,] array = new int[N,N];其中,N为数组的大小,可以根据需要进行调整。接下来,可以使用for循环遍历数组,并累加对角线的元素值,具体代码如下:int sum = 0;for(int i=0; i<N; i++){ sum += array[i,i];} Console.WriteLine("对角...

c# 不确定元素个数 二维数组怎么定义
1, 它们可以用Add,Remove来添加\/删除成员,而不用担心越出数组边界 2, ArrayList可以直接像数组一样访问其成员,比如:int x=(int)SampleArrayListObject[index];3, Collection类可以用ToArray()方法轻松地导出成数组。如果实在不想用Collection类,可以初始化数组时设定长度为1,然后每次添加数组成员前先...

二维数组中的元素怎样访问?
D。二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:a[2][3]将获取数组中第 3 行第 4 个元素。a[i][j]将获取数组中第 i+1 行第 j+1个元素,即数组中第i*m+j+1个数。

相似回答