zoukankan      html  css  js  c++  java
  • (13)C#数组和元组

    如果需要使用同一类型的多个对象,数组是一种数据结构,它包含同一类型的多个元素

     一、一维数组

    1、数组的声明方法

     int [] a;

    因为数组是引用类型,引用类型有个特点是:声明变量时不会马上分配一个内存,只有在用new关键字创建实例的时候,才会分配内存。

    2、创建一个数组实例

    a=new int[4];

    栈里的变量a引用了托管堆上的4个整型值。

    如果事先不知道数组中包含多少个元素,可以使用集合。

    3、初始化数组变量

    int[] a=new int[4]{9,5,4,3};

    右边的[]里如果写了数字,那数字必须与{}数字的个数相同。[]给出的是4个,{}里必须写入4个数据。

    4、初始化数组简写

    初始化一个数组时可以不写数字自由分配元素个数,或者更简单直接省略new和int[]。

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

    5、创建隐式类型的数组

    var name=new [] {"tom","jack","luxi","mi"};

    两个语法上的特别地方:

    1、等号左边省略的[]

    2、右边必须是new[]{}的形式

    3、{}里的数据必须是相同类型,否则编译器不判断类型导致报错。

    6、访问数组元素

    提取数组元素

    int b=a[2];

    数组元素的下标是从0开始的,所以b的值是4.

    给数组元素重新赋值

    int b=6;
    
    a[2]=b;

    二、多维数组

     数组的维数没有限制,以二维数组举例

    1、二维数组的声明

    int[,] a;

    2、二维数组创建实例

    int [,] a=new int[4,2];

    3、初始化

    int [,] a= new int[4,2]{{5,6},{7,2},{9,3},{5,4}};
    /*可以看做是一个4行2列的表,{5, 6}是第1行的数据,一共4行
           5 6
           7 2
           9 3
           5 4
    */

    4、简写

    int[,] a= new int[,] { { 1,2 },{ 3,4 },{ 5,6 },{5,4} };
    int[,] a = {{ 1,2 },{ 3,4 },{ 5,6 },{5,4}};

    5、访问数组元素

    需要用两个坐标确定一个数的位置。

    提取二维数组元素

    int b = a[2, 1];

    一定要记住只有new的时候[]里的数字表示的是行和列,其他地方a[2,1]这里的2和1是数组下标啊,是要从0开始算的。

    对数组的某个元素重新赋值

    a[2,1]=5;
    //这么写就把第三行第二列的值3变成了5
    

    三、交错数组

    交错数组也称之为数组的数组,

    1、声明

    int [][] a;

    2、创建实例

    int[][]a=new int[3][];

    这个数组里包含了3个数组,而且这3个数组的长度可以自由设置。

    3、赋值

    a[0]=new int[] {1,4,6,8,};
    
    a[1]=new int[]{2,3};
    
    a[2]=new int[]{6,6,6};

    交错数组也可以包含二维的数组

    例如

    int[][,] a =new int[3][,];
    a[0]=new int[,]{{2,9},{3,6}};
    a[1] = new int[,] { { 2, 9 }, { 3, 6 }, { 8, 8 } };
    a[2] = new int[,] { { 2, 9 } };

     

    四、引用类型数组

    有一个Person类

        public class Person
        {
            public string a { get; set; }
            public string b { get; set; }
            public override string ToString()
            {
                return String.Format("{0} {1}",a,b);
            }   
        }

    声明Person数组

    Person[] per = new Person[2];

    引用类型的数组必须在使用前为其分配内存,否则会抛出NullReferenceException异常.

    per[0] = new Person { a = "李毅", b = "周杰" };
    per[1] = new Person { a = "Tom", b = "Jack" };

    也可以初始化赋值

                Person[] per = {
                    new Person{ a = "李毅", b = "周杰" },
                    new Person{a = "Tom", b = "Jack" }
                };

    五、遍历数组

     1、用for语句遍历数组

    int [] a={2,9,5,8};
    for(int x=0;x<a.Length;x++)
    {
     int b=a[x];
    Console.WitreLine("b");
    }

    2、foreach遍历数组

    foreach和for有一样的功能也能遍历数组,

    int[] a={2,9,5,8};
    foreach(int x in a)
    {
    Console.WriteLine(x);
    }

    3、for和foreach的对比

    .foreach最大的优点就是能够在不知道数组下标的情况下遍历整个数组,代码可以写的简练些。其他的优势就没有for了

    .for很灵活不仅可以能正着遍历还能倒着遍历以及还可以跳的遍历。

    .如果循环的主题需要元素的下标,则需要用for

    .如果需要修改数组元素,则必须用for,foreach修改会报错。

     

    六、Ayyay类

    七、数组作为参数

     

    八、枚举

     

    九、IEnumerator接口

    十、元组

        class Program
        {
            static void Main(string[] args)
            {
                //赋值元组
                var b = ("tom", 23);
                //调用元组
                Console.WriteLine(b.Item1);//tom
                Console.WriteLine(b.Item2);//23
    
                //给元组元素定义名称
                var c = (name: "liu", age: 29);
                Console.WriteLine(c.age);//29
                //虽然vs隐藏了Item1,但是还是可以用这种方式调用
                Console.WriteLine(c.Item1);
    
    
            }
    
            //定义一个返回元组的函数
            (string, int) stu()
            {
                return ("tom", 23);
            }
        }

    十一、结构比较

    十二、数组常用的属性方法

     数组常用的属性

    Length属性表示数组中元素的个数(包括多维数组的个数).

    int b=a.Length;  //b=8

    数组常用的方法

    1、

  • 相关阅读:
    qt creator中输入中文中文变繁体
    Trie
    pycharm 专业版的 django功能
    fzu 1533
    django使用问题记录
    查看SQLServer最耗资源时间的SQL语句
    从mysql数据库删除重复记录只保留其中一条(保留id最小的一条)
    使用CSS3的appearance属性改变元素的外观
    mysql中将多行数据合并成一行数据
    MySQL字符串的拼接、截取、替换、查找位置
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/5613705.html
Copyright © 2011-2022 走看看