博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#高级编程 (第六版) 学习 第五章:数组
阅读量:4399 次
发布时间:2019-06-07

本文共 2383 字,大约阅读时间需要 7 分钟。

第五章 数组

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}\nLast 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);

}

转载于:https://www.cnblogs.com/xyb930826/p/5283286.html

你可能感兴趣的文章
深入理解浏览器的缓存机制
查看>>
微软向Linux社区开放60000多项专利:对开源微软是认真的
查看>>
Hoshin Kanri在丰田的应用
查看>>
又拍云沈志华:如何打造一款安全的App
查看>>
克服大数据集群的挑战
查看>>
PostgreSQL并发控制(MVCC, 事务,事务隔离级别)
查看>>
DM***的第二阶段OSPF
查看>>
20180702搭建青岛RAC记录
查看>>
Spring Security OAuth 实现OAuth 2.0 授权
查看>>
linux文件及简单命令学习
查看>>
dubbo源码分析-架构
查看>>
新 Terraform 提供商: Oracle OCI, Brightbox, RightScale
查看>>
6套毕业设计PPT模板拯救你的毕业答辩
查看>>
IT兄弟连 JavaWeb教程 JSP与Servlet的联系
查看>>
Windows phone 8 学习笔记
查看>>
linux并发连接数:Linux下高并发socket最大连接数所受的各种限制
查看>>
详解区块链中EOS的作用。
查看>>
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>