zoukankan      html  css  js  c++  java
  • C#3.0学习笔记(6)详谈数组

    1,  数组的定义及重要细节?

      定义:数组是由一个变量名称表示的一组同类型的数据元素,每个元素通过变量名称和一个或多个方括号的索引名称来访问。

      注意:1> 数组一旦被创建,大小就固定了。C#不支持动态数组。

               2> 数组索引号从0开始。也就是说如果维度长度是n,索引号范围是从0到n-1。

               3> 数组属于引用类型,即引用在栈上或堆上,但是数组对象本身总是在堆上。

    2,  数组的分类?

      1>     一维数组

      2>     矩形数组(即某个维度的所有子数组有相同长度)

      3>     交错数组s(即可以有不同长度的子数组)

    3,  数组的声明,初始化和遍历数组元素?

      一维数组:

    namespace array1
    {
    class Program
    {
    static void Main(string[] args)
    {
    //int[] arr1;//声明数组
    //arr1 = new int[] { 10, 20, 30, 40, 50 };//初始化数组
    int[] arr1 = new int[] { 10, 20, 30, 40, 50 };//声明和初始化可以一步完成。等价于:int[] arr1 = { 10, 20, 30, 40, 50 };//快捷语法
    //var arr1 = new[] {10, 20, 30, 40, 50 }; //隐式类型数组。

    //遍历数组
    //方法一:使用for循环:
    for (int i = 0; i < arr1.Length; i++)
    {
    Console.WriteLine("数组元素{0}的值为:{1}",i,arr1[i]);
    }
    //方法二:使用foreach语句:
    //foreach (int item in arr1)//迭代变量item表示数组中的每一个元素。
    //{
    // Console.WriteLine("元素的值为:{0}", item);
    //}
    Console.ReadKey();
    }
    }
    }

      程序输出结果为:


      二维数组(矩形数组):

    namespace array2
    {
    class Program
    {
    static void Main(string[] args)
    {
    int[,] arr2 = new int[,] { {0,1,2},{10,11,12}};//声明和初始化二维数组。
    //遍历数组
    //方法一:使用for循环:
    //for (int i = 0; i < 2; i++)
    //{
    // for (int j = 0; j < 3; j++)
    // {
    // Console.WriteLine("元素[{0},{1}]的值为:{2}",i,j,arr2[i,j]);
    // }
    //}
    //方法二:使用foreach语句:
    foreach (int item in arr2) //对于多维数组,元素的处理次序是最右边的索引号最先递增的,当索引从0到长度减1时,下一个左边的索引被递增,右边的索引被重置为0.
    {
    Console.WriteLine("元素的值分别为:{0}",item);
    }
    Console.ReadKey();
    }
    }
    }

      程序输出结果为:

             交错数组:

    namespace arr3
    {
    class Program
    {
    static void Main(string[] args)
    {
    int[][] arr3 = new int[2][];
    /*交错数组的实例化过程如下:
    首先,实例化顶层数组。
    其次,分别实例化每一个子数组,把新建数组的引用赋值给包含它们的数组的合适元素
    */
    arr3[0] = new int[] { 10,11};
    arr3[1] = new int[] { 12,13,14};
    //遍历数组:
    foreach (int[] array in arr3)
    {
    Console.WriteLine("Starting new array");
    foreach (int item in array)
    {
    Console.WriteLine("数组的元素分别为:{0}",item);
    }
    }
    Console.ReadKey();
    }
    }
    }

       程序输出结果为:

    4, 数组的一些重要属性和方法总结?

    namespace array4
    {
    class Program
    {
    static void Main(string[] args)
    {
    int[] arr4 = new int[] { 15,20,5,25,10};
    PrintArray(arr4);
    Console.WriteLine();//换行

    Array.Sort(arr4);//方法Sort,排序,默认为升序
    PrintArray(arr4);
    Console.WriteLine();

    Array.Reverse(arr4);//方法Reverse,反转
    PrintArray(arr4);
    Console.WriteLine();
    Console.WriteLine();

    Console.WriteLine("维度为:{0},长度为:{1}", arr4.Rank, arr4.Length);//属性Rank表示数组维度,属性Length表示数组长度。
    Console.WriteLine("GetLength(0)={0}", arr4.GetLength(0));//方法GetLength()表示返回数组中指定维度的长度。
    Console.WriteLine("GetType()={0}", arr4.GetType());//方法GetType()表示返回数组类型。
    Console.ReadKey();

    }
    protected static void PrintArray(int[] a)
    {
    foreach (int item in a)
    {
    Console.Write("{0}", item);
    Console.Write("");//在每个数组元素后面加一空格。
    }
    }
    }
    }

       程序输出结果为:

    哎,很晚了,要睡觉了,先总结到这儿吧,不足的部分请大家补充补充啊!

  • 相关阅读:
    【算法导论】第8章线性时间排序_计数排序、基数排序、桶排序
    c语言中字符串分割函数及实现
    【算法导论】第12章二叉查找树
    【算法导论】第6章堆排序及利用堆建立最小优先级队列
    【算法导论】第11章散列表
    atoi、itoa,strcpy,strcmp,memcpy等实现
    采用链地址法处理冲突构造哈希表
    【算法导论】第7章快速排序
    Warshall传递闭包算法的学习与实现
    矩阵的加、减、乘、除、求逆运算的实现
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2229674.html
Copyright © 2011-2022 走看看