You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中从二维数组赋值一维数组报错CS0022的问题咨询

为什么C#中二维数组取行会触发CS0022错误?

你遇到的CS0022错误,核心原因是C#的int[,]是多维矩形数组,和Python的二维列表结构完全不同:

  • 在Python里,二维列表本质是「列表的列表」,每个子列表都是独立的一维列表,所以twoArray[0]能直接拿到第一个子列表。
  • 但C#的int[,]是一块连续分配的内存,它没有单独的“行数组”对象,必须同时指定行索引和列索引(两个索引)才能定位到单个元素,只写一个索引twoArray[0]就会触发索引数量不匹配的错误。

解决方法

方法1:改用交错数组(数组的数组)

如果想实现类似Python的写法,应该声明交错数组int[][],它的结构就是一维数组的集合,每个元素都是独立的一维数组:

int[][] twoArray = { new int[] { 1, 2, 3 }, new int[] { 3, 2, 1 } };
int[] oneArray = twoArray[0]; // 正常赋值,拿到第一行的一维数组

方法2:从多维数组手动提取整行

如果必须使用int[,]类型的多维数组,需要手动遍历复制整行的元素:

int[,] twoArray = { { 1, 2, 3 }, { 3, 2, 1 } };
// 获取行的长度(第二维度的元素个数)
int rowLength = twoArray.GetLength(1);
int[] oneArray = new int[rowLength];

for (int i = 0; i < rowLength; i++)
{
    oneArray[i] = twoArray[0, i]; // 逐个取第0行的元素
}

也可以用LINQ简化操作(需要引用System.Linq命名空间):

using System.Linq;

int[,] twoArray = { { 1, 2, 3 }, { 3, 2, 1 } };
int[] oneArray = Enumerable.Range(0, twoArray.GetLength(1))
                           .Select(colIndex => twoArray[0, colIndex])
                           .ToArray();

内容的提问来源于stack exchange,提问作者avedium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:27:12