C#中的多维数组和交错数组

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: C#中有多维数组和交错数组,两者有什么区别呢!直白些,多维数组每一行都是固定的,交错数组的每一行可以有不同的大小。以二维的举例,二维数组就是m×n的矩阵,m行n列;而交错数组(又叫锯齿数组)有m行,但是每一行不一定是n列。Got it?在这个意义上,C++和Java中的多维数组起始相当于C#中的交错数组,要使用多维数组,只需要保证每个维度的长度是相等的就OK了!因为m×n的矩阵这样的多维数组比较常用,感觉C#中对两个进行了区分,提供了一些便利!

C#中有多维数组和交错数组,两者有什么区别呢!
直白些,多维数组每一行都是固定的,交错数组的每一行可以有不同的大小。
以二维的举例,二维数组就是m×n的矩阵,m行n列;而交错数组(又叫锯齿数组)有m行,但是每一行不一定是n列。Got it?
在这个意义上,C++和Java中的多维数组起始相当于C#中的交错数组,要使用多维数组,只需要保证每个维度的长度是相等的就OK了!
因为m×n的矩阵这样的多维数组比较常用,感觉C#中对两个进行了区分,提供了一些便利!
还有要注意C#中的数组也是一种类型(C++中不是,比如C++中函数返回值不能是数组,感觉C++中的数组更像是一个指针)!


下面看实例:
二维数组:

public static void Main()
{
    int row = 5;
    int column = 5;
    int[,] matrix = new int[row, column];
    //初始化
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < column; j++)
        {
            matrix[i, j] = (i + 1) * 10 + j + 1;
        }
    }
    //输出
    Console.WriteLine("该二维数组有:{0}行{1}列!", matrix.GetLength(1), matrix.GetLength(1));
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < column; j++)
        {
            Console.Write(matrix[i, j] + " ");
        }
        Console.Write('\n');
    }
}

结果:
截屏2023-09-08 15.27.32.png

说明:

多维数组的声明采用int[,]这样的方式
获取多维数组的第i维的长度用数组名.GetLength(i)方法
例如:获取二维数组的行:matrix.GetLength(0);获取二维数组的列:matrix.GetLength(1)
多维数组的Length属性是数组总共的长度



二维交错数组:

public static void Main()
{
    int row = 5;
    //交错数组空间的申请
    int[][] matrix = new int[row][];
    for (int i = 0; i < row; i++)
    {
        matrix[i] = new int[i + 1];
    }
    //数据初始化
    for (int i = 0; i < matrix.Length; i++)
    {
        for (int j = 0; j < matrix[i].Length; j++)
        {
            matrix[i][j] = (i + 1) * 10 + j + 1;
        }
    }
    //数据输出
    for (int i = 0; i < matrix.Length; i++)
    {
        for (int j = 0; j < matrix[i].Length; j++)
        {
            Console.Write(matrix[i][j] + " ");
        }
        Console.Write('\n');
    }
}

结果:
截屏2023-09-08 15.27.46.png

说明:

交错数组的声明使用int[][]的形式
交错数组获取长度直接使用Length属性即可

目录
相关文章
|
6月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
6月前
|
存储 C#
C#学习系列相关之数组(一)---数组的定义与使用
C#学习系列相关之数组(一)---数组的定义与使用
|
6月前
|
存储 人工智能 C#
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
82 0
|
开发框架 .NET C#
c#数组补充
c#数组的几个简单的补充
42 0
|
2月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
81 2
|
5月前
|
存储 开发框架 .NET
C#中的数组探索
C#中的数组探索
|
6月前
|
C#
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
183 2
C#基础⑥.2——数组(冒泡排序、求最值、数组排序、forr反转)
一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共5人)的平均成绩,然后把所有成绩显示出来。
|
6月前
|
存储 C#
C#基础语法(数组和函数)
C#基础语法(数组和函数)
65 1
|
6月前
|
存储 C# C++
C# 笔记2 - 数组、集合与与文本文件处理
C# 笔记2 - 数组、集合与与文本文件处理
78 0