返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中多维数组[,]和交错数组[][]的区别
  • 859
分享到

C#中多维数组[,]和交错数组[][]的区别

2024-04-02 19:04:59 859人浏览 薄情痞子
摘要

多维数组的声明 在声明时,必须指定数组的长度,格式为 type [lenght ,lenght ,lengh, ... ] int [,] test1 = new int [3,3]

多维数组的声明

在声明时,必须指定数组的长度,格式为 type [lenght ,lenght ,lengh, ... ]

int [,] test1 = new int [3,3];

或声明时即赋值,由系统推断长度

int [,] test1 = {
            {1,2,3},
            {1,2,3},
            {1,2,3},
        };

交错数组的声明

声明时,至少需要指定第一维的长度,格式为 type [ ] [ ] [ ] ...

int [][] test1 = new int[5][];
int [][] test1 = new int[][];    //注意,此的声明方式是错的

或者声明时即赋值,由系统推断长度

int [][] test1 = {
    new int[] {1,2,3,4},
    new int[] {1,2,3},
    new int[] {1,2}
};

多维数组与交错数组 二者的相同、区别

两者声明时,都必须指定长度,多维数组必须指定每一维的长度,而交错数组需要至少需要指定第一维的长度。

多维数组声明时,符号是这样的 [ , , , , ],逗号在 方括号 [ ] 中,每一维长度用逗号分隔。而交错数组每一维独立在 [ ]中

当你想指定数组长度时,只能在等号右侧指定,int [,] test1 = new int [3,3] 是正确的 ;int [6,4] test1 = new int [6,4] 是错误的;

下面以代码形式说明

大小不一致的多维数组会发生错误

int [,] test1 = {
            {1,2,3,4},
            {1,2,3},
            {1,2}
        };         //这样是错的,长度必须一致
int [,] test1 = new int [4,5] {
            {1,2,3,4,5},
            {1,2,3},
            {1,2,3}
        };        //这样也是错误的,长度必须一致,必须为每一个位置赋值

这一点C#C语言有所区别,C语言可以不全赋值,没有赋值的位置系统默认为0。

下面的方法是正确的

int [,] test1 = {
            {1,2,3},
            {1,2,3},
            {1,2,3}
        };

初始化交错数组

上面已经说了声明一个交错数组的方法

int [][] test1 = {
          new int[] {1,2,3,4},     //new int[4] {1,2,3,4}
          new int[] {1,2,3},      //new int[3] {1,2,3}
          new int[] {1,2}
      };

注意,在里面有new int[],这正是交错数组的特性。

交错数组是由数组构成的数组,交错数组要求为内部的每个数组都创建实例。

即交错数组的每一维都是一个实例,每一个实例为一个数组。

数组的长度是固定的

无论多维数组还是交错数组,长度都是固定的,不能随意改变。

获取数组的长度

使用 对象.Length 获取数组的长度,需要注意的是,多维数组的长度是每一维相乘,即元素总个数。

       int [,] test1 = {
           {1,2,3},
           {1,2,3},
           {1,2,3}
       };
       Console.WriteLine(test1.Length);
输出为   9

而交错数组的长度则是“内部组成的数组的个数”,例如

int [][] test1 = {
     new int[] {1,2,3},
     new int[] {1,2,3},
     new int[] {1,2,3},
 };
 Console.WriteLine(test1.Length);
 输出为 3

方法

多维数组、交错数组的方法无差别,都具有Sort()、Clear()等方法,这里不再赘述,关于数组的高级用法,请查阅

https://www.jb51.net/Special/265.htm

下列为System.Array类的属性

由于系统提供的方法比较多,有兴趣请查阅

Https://docs.microsoft.com/zh-cn/dotnet/api/system.array?view=netframework-4.7.2

使用数组初始化类型

在C#中有 lambda、匿名类等等,C# 5.0/6.0 后,给声明类、声明类型类型、赋值等有了很方便的操作方法。下面举例测试

例子1

使用数组对集合、集合泛型等初始化

声明一个 List 泛型集合

using System.Collections.Generic;        //头部引入

    //main中的代码
        static void Main(string[] args)
        {
            List<string> list = new List<string>();

            Console.ReadKey();
        }

那么,给集合 list 增加一个项,用 Add() 方法

        static void Main(string[] args)
        {
            List<string> list = new List<string>();
            //增加
            list.Add("a");
            list.Add("b");
            list.Add("c");
            list.Add("d");
            list.Add("e");
            list.Add("f");
            list.Add("g");
            Console.ReadKey();
        }

利用 “数组” 来添加新项

List<string> list = new List<string>(){"a","b","c","d","e","f"}; 

List<string> list = new List<string>{"a","b","c","d","e","f"};

//以上两种方法都可以,注意后面有没有 ()

例子2

上面的例子利用数组直接在集合声明时初始化,但是不能很好的声明“骚操作”。

试试交错数组

1,在 program类 所在的命名空间中写一个类

    public class Test
    {
        public int x;
        public int y;
        public void What()
        {
            Console.WriteLine(x + y);
        }
    }

2,在 Main 方法中

       static void Main(string[] args)
        {
            List<Test> list = new List<Test>()
            {
                new Test{x=1,y=6},
                new Test{x=8,y=6},
                new Test{x=4,y=8},
                new Test{x=5,y=7},
                new Test{x=3,y=3},
                new Test{x=6,y=6},
                new Test{x=9,y=666},
                new Test{x=7,y=6},
            };
            Console.ReadKey();
        }

完整代码如下

    public class Test
    {
        public int x;
        public int y;
        public void What()
        {
            Console.WriteLine(x + y);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Test> list = new List<Test>()
            {
                new Test{x=1,y=6},
                new Test{x=8,y=6},
                new Test{x=4,y=8},
                new Test{x=5,y=7},
                new Test{x=3,y=3},
                new Test{x=6,y=6},
                new Test{x=9,y=666},
                new Test{x=7,y=6},
            };
            Console.ReadKey();
        }
    }

由于类引用类型,它的内存是引用地址,不像 int、char等类型,所以在对类(引用类型)使用数组、集合等形式时,可以用 “交错数组” 来理解。

以上所述是小编给大家介绍的C#中多维数组[,]和交错数组[][]的区别,希望对大家有所帮助。在此也非常感谢大家对编程网网站的支持!

--结束END--

本文标题: C#中多维数组[,]和交错数组[][]的区别

本文链接: https://lsjlt.com/news/162020.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中多维数组[,]和交错数组[][]的区别
    多维数组的声明 在声明时,必须指定数组的长度,格式为 type [lenght ,lenght ,lengh, ... ] int [,] test1 = new int [3,3]...
    99+
    2024-04-02
  • C#一维数组和多维数组是什么
    本篇内容介绍了“C#一维数组和多维数组是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#一维数组和C#多维数组数组是程序设计中常用的一...
    99+
    2023-06-17
  • C#中的矩形数组(多维数组)和锯齿数组的实现
    目录(一)矩形数组(二)锯齿数组总结(一)矩形数组 在C#中,矩形数组(rectangular array),又称多维数组,是使用多个索引访问其元素的数组。 1. 二维数组的声明: ...
    99+
    2023-05-15
    C# 矩形数组 C# 锯齿数组 C# 多维数组
  • c++中string和char数组的区别
    string 和 char 数组是 c++ 中存储字符串的两种方式。string 是一种类,存储在动态分配的内存中,可轻松调整大小并提供各种操作方法。char 数组是一种固定大小的字符数...
    99+
    2024-05-10
    c++ 标准库
  • python中list*n生成多维数组与for循环生成多维数组的区别说明
    目录list*n生成多维数组与for循环生成多维数组的区别1.从一个问题说起2.正确的方式如何动态生成多维数组下面代码生成一个一个3×3×2的三维数组list...
    99+
    2024-04-02
  • php中多维数组出错
    PHP是一门非常适合用于开发Web应用程序的编程语言,它支持多种类型的数据结构,包括多维数组。多维数组是将一维数组嵌套起来形成的一种数据结构,可以更好地组织和管理数据。然而,在使用PHP开发过程中,我们有可能会遇到多维数组出错的情况,这可能...
    99+
    2023-05-19
  • C#二维数组与多维数组的具体使用
    目录1、二维数组2、初始化二维数组3、访问二维数组种的元素C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储...
    99+
    2023-05-15
    C#二维数组与多维数组 C#二维数组 C#多维数组
  • C#中获取二维数组的行数和列数以及多维数组各个维度的长度
    如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组 int ...
    99+
    2024-04-02
  • C#二维数组与多维数组如何使用
    这篇文章主要介绍“C#二维数组与多维数组如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#二维数组与多维数组如何使用”文章能帮助大家解决问题。C# 中同样支持多维数组(也可称为矩形数组),它...
    99+
    2023-07-05
  • JavaScript中伪数组和数组有什么区别
    JavaScript中伪数组和数组有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做...
    99+
    2023-06-14
  • C++数组指针和二维数组详情
    目录1、二维数组2、数组指针和二维数组1、二维数组 对于一维数组,int arr[10]; arr是数组名,也是首元素的地址,&arr是数组的地址,那么对于二维数组 int ...
    99+
    2024-04-02
  • 数组名和数组名取地址的区别
    以下代码会打印出什么样的日志呢? #include   int a[2] = {1,2}; int main(){         printf("a = %p ", a); // I         printf("&a = %p "...
    99+
    2014-09-18
    数组名和数组名取地址的区别
  • JavaScript伪数组和数组的使用与区别
    伪数组和数组 在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function)。 对象与数组的关系 在说区别之前,需要先提到另外一个知识,就是 ...
    99+
    2024-04-02
  • PHP数组和Bash数组的区别是什么?
    PHP和Bash都是常见的编程语言,它们都支持数组。但是它们的数组有哪些区别呢?本文将深入探讨PHP数组和Bash数组的区别,并且提供一些代码演示来帮助你更好地理解。 一、PHP数组 PHP是一种服务器端脚本语言,它是一种用于开发Web应用...
    99+
    2023-10-29
    数组 bash windows
  • C++数组和指针的区别与联系
    目录1 数组和指针的概念2 数组和指针的操作2.1 赋值2.2 存储2.3 大小2.4 初始化3 数组和指针的传参3.1 数组的传参3.2 指针的传参4 总结前言: 一直以来,有很多...
    99+
    2024-04-02
  • C语言指针数组和数组指针的区别有哪些
    这篇“C语言指针数组和数组指针的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言指针数组和数组指针的区别有哪些...
    99+
    2023-07-04
  • Python多维数组和矩阵
    注:每一步可能依赖于上一步import的模块 一、数组 1,用numpy对数组进行运算 from numpy import array mm=array((1, 1, 1)) pp=array((1, 2, 3)) 则pp+mm 输出...
    99+
    2023-01-31
    多维 数组 矩阵
  • C语言数组指针和指针数组有什么区别
    这篇文章主要讲解了“C语言数组指针和指针数组有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数组指针和指针数组有什么区别”吧!区别:指针数组本身是一个数组,数组的元素都是指针,...
    99+
    2023-06-20
  • c语言指针数组和数组指针有什么区别
    C语言中,指针数组和数组指针是两种不同的概念。 指针数组(Pointer Array):指针数组是一个数组,其中的元素都是指针类型...
    99+
    2023-10-27
    c语言
  • php数组与spl数组的区别
    随着 Web 开发技术的发展,PHP 已经成为了最常用的服务器端编程语言之一。而在 PHP 编程中,数组是一种非常重要的数据类型,用于储存多个变量或值。在 PHP 中,有两种数组:普通数组和 SPL(Standard PHP Library...
    99+
    2023-05-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作