zoukankan      html  css  js  c++  java
  • C#高级编程 (第六版) 学习 第五章:数组

    第五章 数组

    1,简单数组

    声明:int[] myArray;

    初始化:myArray = new int[4]; 为数组分配内存。

    还可以用如下的方法:

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

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

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

    如果数组中的元素是引用类型,必须为每个数组分配内存:

    public class Person

    {

    public string FirstName { get; set; }

    public string LastName { get; set; }

     

    public Person()

    {

    }

     

    public Person(string firstName, string lastName)

    {

    this.FirstName = firstName;

    this.LastName = lastName;

    }

     

    public override string ToString()

    {

    return String.Format("First name:{0} Last name:{1}", FirstName, LastName);

    }

    }

    Person[] myPersons = new Person[2];

    myPersons[0] = new Person{"Ayrton","Senna"};

    myPersons[1] = new Person{"Michael", "Schumacher"};

    也可以

    Person[] myPersons = {new Person("A","B")};

    如果不用new,会报错。

    2,多维数组

    声明和使用多维数组:

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

    twoDim[0,0] = 1;

    twoDim[2,,2] = 10;

    数组声明之后,就不能改变其维数了。

    3,锯齿数组

    每一行都有不同的大小

    int[][] jagged = new int[3][];

    jagged[0] = new int[2]{1,2};

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

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

    4, Array类

    创建数组

    Array myArray = Array.CreateInstance(typeof(int), 5);

    复制数组

    实现了IClonable接口

    Array.Clone():创建数组的浅表副本

    Array.CopyTo:传送已有副本

    排序:实现了IComparable接口

    5,数组和集合接口

    Array类实现了IEnumable、ICollection和IList接口

    ICollection接口派生于IEnumable接口,添加了如下属性和方法

    属性和方法

    说明

    Count

    集合中元素的个数,和Length相同

    IsSynchronized

    SyncRoot

    IsSynchronized确定集合是否线程安全的。数组是false,对于同步访问,SyncRoot可以用于线程安全的访问

    CopyTo

    将数组的元素复制到已有数组中,类似于静态的Array.CopyTo

    IList

    IList接口派生于ICollection接口,

    接口函数和属性

    说明

    Add()

    向集合中添加元素

    Clear()

    清除数组中所有的元素

    Contains()

    确定某个元素是否在数组中,返回为true或者false。

    Indexof()

    对数组元素进行线性搜索,返回找到的第一个元素的索引。为找到返回-1.

    Insert()

    Remove()

    RemoveAll()

    对集合,插入,删除,删除全部。

    对数组,不支持,抛异常。

    IsFixedSize

    数组大小是固定的,返回true

    IsReadOnly

    是否可以读写

    Item

    使用整型索引访问数组

    6,枚举

    IEnumerator接口

    接口的方法和属性

    说明

    MoveNext()

    移动到集合的下一个元素上,有,true,结尾,false

    Currnet()

    返回光标所在的元素

    Reset()

    将光标重新定位到开头

    foreach语句解析

    数组或者集合执行带GetEumerator()方法的IEnumerable接口。GetEnumerator返回一个执行IEnumerable接口的枚举。然后使用枚举迭代集合。

    foreach(Person p in persons)

    {

        Console.WriteLine(p);

    }

    IEnumerator enumerator = persons.GetEnumerator();

    while(enumerator.MoveNext())

    {

        Person p = (Person)enumerator.Current;

        Console.WriteLine(p);

    }

    yield语句

    C#2.0添加了yield语句,用于创建枚举器。

    public class HelloCollection

    {

    public IEnumerator<string> GetEnumerator()

    {

    yield return "Hello";

    yield return "World";

    }

    }

    HelloCollection h = new HelloCollection();

    foreach (string s in h)

    {

        Console.WriteLine(s);

    }

  • 相关阅读:
    【草稿】自定义ASP.NET MVC Html辅助方法
    Python安装(64位Win8.1专业版)
    部署WP程序到自己的手机
    C++中vector小学习,顺便查了下<stdio.h>(或<cstdio>)
    关于ENVI5.0菜单栏不能正常显示(win7 x86系统)
    如何让一个精灵跟随触点移动
    GDAL在VS下配置测试
    【docker】修改现有容器的端口
    Django channles线上部署(腾讯云)
    【leafletjs】添加标记、轨迹线与删除标记、轨迹线
  • 原文地址:https://www.cnblogs.com/xyb930826/p/5283286.html
Copyright © 2011-2022 走看看