• C#数组


    数组是什么?

    可以将同一类型的多个变量存储在一个数组数据结构中。通过指定数组的元素类型来声明数组。如果希望数组存储任意类型的元素,可将其类型指定为object。在C#的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从Object继承的。

    数组具有以下属性:

    1. 数组可以是一维、多维或交错的
    2. 创建数组实例时,将建立纬度数量和每个纬度的长度。这些值在实例的生存期内无法更改
    3. 数值数组元素的默认值设置为0,而引用元素设置为null
    4. 数组从0开始编制索引:包含n元素的数组从0索引到n-1
    5. 数组元素可以是任何类型,其中包括数组类型
    6. 数组元素是从抽象的基类型Array派生的引用类型。可以使用foreach语句循环访问数组

    对于值类型,使用默认值(0位模式)初始化数组元素,元素将具有值0

    所有引用类型(包括不可为null类型)都具有值null

    对于可谓null的类型,HasValue设置为false,元素将设置为null

    一、一维数组

    使用new运算符创建一维数组,该运算符指定数组元素类型和元素数目。

    以下示例声明一个包含三个整数的数组:

    int[] ints1 = new int[3];

    此数组包含从array[0]到array[2]的元素.数组的元素将初始化为元素类型对的默认值,0代表整数。

    数组可以存储指定的任意元素类型,如声明字符串类型的数组:

    string[] strings = new string[3];

    数组的初始化不单单只有指定数组元素的长度,还可以在声明初始化数组的元素:

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

    字符串类型的数组也是如此:

    string[] fruit = { "西瓜", "哈密瓜", "甜瓜" };

    在声明初始化数组的时候,不使用new表达式和数组类型,这称为隐式类型化数组:

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

    string[] fruit = { "西瓜", "哈密瓜", "甜瓜" };

    还有一种声明初始化数组的方法:

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

    所以说声明初始化数组,有三种方法:

    1.int[] ints1 = new int[3];

    2.int[] int3 = { 1, 2, 3 };

    3.int[] ints2 = new int[3] { 1, 2, 3 };

    要是想要数组中的元素,可以使用索引来检索数组中的数据。例如:

    string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };

    Console.WriteLine(fruit[0]);//西瓜

    Console.WriteLine(fruit[1]);//哈密瓜

    Console.WriteLine(fruit[2]);//甜瓜

    Console.WriteLine(fruit[3]);//苹果

    Console.WriteLine(fruit[4]);//雪梨

    要是想让上面数组中的最后一个元素,不单单可以使用索引,还可以使用Length数组的长度减去1,因为数组中的索引是从0开始的,而数组的长度是从1开始的,那么就是数组的长度就是数组中元素的个数,那么用数组的长度减去1就是等同于数组中的最后一个元素的索引:

    Console.WriteLine(fruit[fruit.Length-1]);//雪梨

    要是数组中的元素不止5个呢,有上百个或上千个的元素,如果要其中的元素的话,难道就只能一个一个输出了吗?那么这样要输出到什么时候!其实还有一种可以通过循环输出的方法来输出每个元素。例如:

    string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };

    foreach (string item in fruit)

    {

        Console.WriteLine("foreach输出:{0}",item);

    }

    控制台输出:

     

    要是想修改其中一个元素的值,那么可以通过索引来修改。例如:

    string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };

    fruit[2] = "猕猴桃";

    foreach (string item in fruit)

    {

        Console.WriteLine("foreach输出:{0}",item);

    }

    控制台输出:

     

    • 多维数组

    二维数组也称为多维数组

    数组可以具有多个纬度。例如,下面声明一个具有三行三列的二维数组:

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

    以下声明具有三个纬度的数组:

    int[,,] num2 = new int[3, 3, 4];

    这样看来多一个纬度在定义时的[]中加上“,”来定义多维数组

    多维数组初始化,如下:

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

    int[,] num2 ={ { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };

    int[,] num3 = new int[,] { { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };

    int[,] num4 = new int[3, 3] { { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };

    声明初始化多维数组的方法一样可以有很多种

    字符串类型也是可行的:

    string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };

    要是想要数组中的元素,可以使用索引来检索数组中的数据。例如:

    string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };

    Console.WriteLine(str[0,0]);//桃子

    Console.WriteLine(str[0,1]);//蓝莓

    Console.WriteLine(str[0,2]);//青柚

    Console.WriteLine(str[1,0]);//橘子

    Console.WriteLine(str[1,1]);//橙子

    Console.WriteLine(str[1,2]);//石榴

    还可以通过循环来输出数组中的元素

    1.

    string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };

    foreach (string item in str)

    {

        Console.WriteLine("foreach输出:{0}",item);

    }

    控制台输出:

     

    2.

    string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };

    for (int i = 0; i < str.GetLength(0); i++)

    {

        for (int j = 0; j < str.GetLength(1); j++)

        {

            Console.Write(str[i, j] + "\t");

        }

        Console.WriteLine("\n");

    }

    控制台输出:

     

    要是想修改元素的值,那么可以通过索引来修改。例如:

    string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };

    str[0, 2] = "香蕉";

    str[1, 0] = "圣女果";

    foreach (string item in str)

    {

        Console.WriteLine("foreach输出:{0}",item);

    }

    控制台输出:

     

  • 相关阅读:
    电动车企的2023:抱团活下去
    vue通过span-method合并列之后,合并列显示在中间位置,根据鼠标滑动跟随展示
    浙江大学机器学习(胡浩基)学习笔记二:人工神经网络、深度学习
    第十三届蓝桥杯C++B组国赛C题——卡牌 (AC)
    Conmi的正确答案——米家第一个ReactNative程序开发记录
    JavaScript中常用的事件
    NFT 推荐|Funguys 王国作品集第一弹
    音视频基本概念和FFmpeg的简单入门
    Spring实例化源码解析之ConfigurationClassPostProcessor(二)
    iCloud开发: key-value Storage,CloudKit,iCloud Documents
  • 原文地址:https://blog.csdn.net/m0_57774967/article/details/126335031