首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多维数组的C#行

多维数组的C#行
EN

Stack Overflow用户
提问于 2012-03-06 19:02:54
回答 2查看 20.4K关注 0票数 8

在C#编程语言中,如何传递多维数组的一行?例如,假设我有以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[,] foo;
foo = new int[6,4];
int[] least;
least = new int[6];

for(int i = 0; i < 6; i++)
{
    least[i] = FindLeast(ref foo[i]);     //How do I pass the ith row of foo???
}

另外,有人能给我解释一下在C#中使用矩形和锯齿形数组的好处吗?在其他流行的编程语言中也会发生这种情况吗?(Java?)谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 19:07:24

您不能传递矩形数组的行,您必须使用交错数组(数组的数组):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[][] foo = new int[6][];

for(int i = 0; i < 6; i++)
    foo[i] = new int[4];

int[] least = new int[6];

for(int i = 0; i < 6; i++)
    least[i] = FindLeast(foo[i]);

编辑

如果你觉得使用交错数组很烦人,而且非常需要一个矩形数组,那么一个简单的技巧就可以拯救你:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int FindLeast(int[,] rectangularArray, int row)
票数 8
EN

Stack Overflow用户

发布于 2014-05-02 13:49:17

更新:正如Jon Skeet正确地指出的那样,这不提供对行的引用,而是创建一个新的副本。如果您的代码需要更改行,则此方法不起作用。我重命名了该方法,以使这一点变得清晰。

更新2:如果您希望能够编辑字段,并对父数组进行更改,您可以使用我在this library I maed中提供的包装器。结果行foo.Row(i)不是一个数组,而是实现了IList,所以如果您需要传递一个数组,这也不是一个解决方案。

此扩展方法将允许您查询行的多维数组。应该注意的是,这是计算繁重的(不是有效的),如果可能的话,您应该在这些情况下使用锯齿数组。但是,如果您发现自己处于不能使用交错数组的情况下,这可能会很有用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static T[] CopyRow<T>(this T[,] arr, int row)
{
    if (row > arr.GetLength(0))
        throw new ArgumentOutOfRangeException("No such row in array.", "row");

    var result = new T[arr.GetLength(1)];
    for (int i = 0; i < result.Length; i++)
    {
        result[i] = arr[row, i];
    }
    return result;
}

你的代码现在可以重写了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[,] foo;
foo = new int[6,4];
int[] least;
least = new int[6];

for(int i = 0; i < 6; i++)
{
    least[i] = FindLeast(ref foo.CopyRow(i));
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9590144

复制
相关文章
C#中的多维数组和交错数组
C#中有多维数组和交错数组,两者有什么区别呢! 直白些,多维数组每一行都是固定的,交错数组的每一行可以有不同的大小。 以二维的举例,二维数组就是m×n的矩阵,m行n列;而交错数组(又叫锯齿数组
卡尔曼和玻尔兹曼谁曼
2019/01/22
2.9K0
C#中的多维数组和交错数组
C# 多维数组 交错数组的区别,即 [ , ] 与 [ ][ ]的区别
在声明时,必须指定数组的长度,格式为 type [lenght ,lenght ,lengh, ... ]
痴者工良
2021/04/26
1.1K0
多维数组的传递
接收多维数组的函数,可以省略相当于开头下标的n维的元素个数。但是,(n - 1)维之下的元素个数必须是常量。 以下是接收一维、二维、三维数组的参数的声明示例: void func1(int v[], int n); //元素类型为int、元素个数随意(n)。 void func2(int v[][3], int n); //元素类型为int[3]、元素个数随意(n)。 void func3(int v[][2][3], int n); //元素类型为int[2][3]、元素个数随
Zoctopus
2018/06/04
2.1K0
多维数组的理解
要清楚的理解多维数组,需要先理解指针的算术运算和数组名的含义。 1、指针的算术运算     指针的算术运算与普通的类型的算术运算是不同的,编译器会在指针的算术运算的过程中自动乘以sizeof(type),如int p=1;p=p+2;则p=3;而int *p; (假如p指向的初始地址位2000),那么p=p+2;实际上指向的是2000+2*sizeof(int),32位系统下的结果为2008。 2、多维数组名字的理解     对于数组名大家都知道可以理解为指针,可究竟这个指针指向的内容是什么呢?这个我没法直
用户1215536
2018/02/05
2.3K0
Java 数组及多维数组
注意一点,数组每行可以不等长 可以两种写法,直接枚举初始化,或者new type [len1][len2]... import java.util.Arrays; public class Myarray { public static void main(String[] args) { // 一维数组声明 int arr1 [] = new int[3]; int [] arr2 = {4,5,6}; a
Michael阿明
2021/09/06
2.1K0
python 多维数组的排序
这几天写php程序,发现php里有一个array_multisort()函数十分好用,可以轻松对多维数组进行排序,查了查python的相关资料,视乎没有一个比较直接的函数来完成多维数组的排序
py3study
2020/01/08
3K0
多维数组遍历
多维数组遍历。实际为一维数组的嵌套,吧第一次遍历输出的值当做内部的数组继续遍历,三维数组遍历持续第二次的值当做第三次遍历的数组
十月梦想
2018/08/29
1.9K0
java多维数组
Java 是一种高级编程语言,广泛应用于各种软件开发和企业应用中。Java 语言支持多维数组,这是一个非常强大和有用的特性。多维数组可以帮助开发人员处理各种复杂的数据结构和算法,同时提高代码的可读性和可维护性。本文将详细介绍 Java 多维数组的概念、用法和示例。
堕落飞鸟
2023/04/03
1.7K0
java 对多维数组的工具类(比如遍历多维数组工具类)
目录 1 遍历int类型二维数组 2 使用流遍历int 类型二维数组 3 遍历 float 类型二维数组 4 遍历 double 类型二维数组 5 遍历 int 类型 3维数据 6 遍历 Float 类型 3维数据 1 遍历int类型二维数组 public static void printErIntArray(int[][] matrix){ for (int i = 0; i < matrix.length; i++) { //this equals to the row in our
一写代码就开心
2022/06/28
2K0
【C 语言】数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )
array + i 表示第 i 行的地址 , 整个第 i 行地址 , array 是 二级指针 ;
韩曙亮
2023/03/29
5.7K0
【C 语言】数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )
PHP的多维数组排序
熟悉PHP的小伙伴都知道有很多内置函数可以对数组进行排序操作或者自定义一些排序方法(冒泡)等等。
用户2475223
2019/12/17
3.7K0
Matlab的多维数组操作
MATLAB中的多维数组是指具有两个以上维度的数组。在矩阵中,两个维度由行和列表示。
用户9925864
2022/07/27
1.5K0
Matlab的多维数组操作
Multik——Kotlin的多维数组
许多繁重的数据任务以及优化问题都可归结为在多维数组上执行计算。今天,我们想与你分享适合此类计算的基础库——Multik。
bennyhuo
2021/03/18
2.2K0
Multik——Kotlin的多维数组
4,array多维数组
float16('f2'),float32('f4'),float64('f8')
lyhue1991
2020/07/17
1.7K0
多维数组取值问题
给予一个多维数组和一个描述取值路径的一维数组, 通过调用函数f返回取值路径描述的值,如 f([[1, 2], [3, 4], [5, 6]], [0, 0]) -> 1
littlelyon
2018/10/19
2.4K0
Java 多维数组遍历
数组是Java中的一种容器对象,它拥有多个单一类型的值。当数组被创建的时候数组长度就已经确定了。在创建之后,其长度是固定的。下面是一个长度为10的数组:
哲洛不闹
2018/09/19
2.6K0
Java 多维数组遍历
C++:数组与多维数组
数组与vector类似,可以储存固定大小、类型相同的顺序集合,但是在性能和灵活性的权衡上与vector不同。并且元素应为对象,所以不存在引用的数组,但是存在数组的引用。与vector不同的是,数组的大小确定不变,不能随意向数组增加元素。如果不清楚元素的确切个数,请使用vector。定义数组的时候必须指定数组的类型,不允许使用 auto 关键字由初始值的列表推断类型。
用户7886150
2021/02/03
2K0
C语言:多维数组
多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:
用户6755376
2020/04/14
4.2K0
C语言:多维数组
php 多维数组去空值字段/多维数组改键名称
我有这样一个需求,下面我以json格式展示便于查看结构。我需要删除多维数组中的空字段/指定字段,并且修改某些字段的键名称。 [ { "_id":1, "name":"笔记本整机", "tag":"", "list":[ { "_id":19, "name":"笔记本", "tag":"",
友儿
2022/09/11
3.1K0
点击加载更多

相似问题

行中的C#多维数组

10

删除特定列行多维数组C#

11

C#多维数组与Java多维数组

10

C#多维数组

61

C#多维数组

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文