本章节主要来讲一些关于数组的问题。
如果需要使用同种类型的多个对象,就可以使用集合和数组。
4.1 数组定义和初始化
int[] myArray;
数组是引用类型,所以必须给它分配堆上的内存。
int[] myArray=new int[4]{1,2,3,4};或者int[] myArray={1,2,3,4};
4.2 访问数组元素
int i=myArray[1];
myArray[3]=4;
如果使用错误的索引器值,就会抛出IndexOUtOfRangeException类型的异常。
4.3 使用引用类型
Person类
public class Person
{
public Person()
{
}
public Person(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return String.Format("{0} {1}", FirstName, LastName);
}
}
{
public Person()
{
}
public Person(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return String.Format("{0} {1}", FirstName, LastName);
}
}
声明一个包含两个person元素的数组。
person myPerson=new person[2];
myPerson[1]=new person{"1","2"};
myPerson[2]=new person{"3","4"};
4.4 Array类
Array类为C#每个数组定义了方法和属性。比如length属性,或者使用foreach语句的迭代数组。Array类是一个抽象类,所以不能使用构造函数来创建数组。 创建数组不但可以使用上面介绍的简单数组创建方法,也可以使用静态方法CreateInstance()创建数组。
下面给出一个简单的例子:
Array示例
4.5 数组和集合接口
Array实现了IEnumerable、ICollection和IList接口,以访问和枚举数组中的元素。
IEnumerable接口是由foreach语句用于迭代数组的接口。
ICollection接口派生于IEnumerable接口并添加了Count属性等方法,这个接口主要是用于确定集合的元素个数或用于同步。
IList接口派生于ICollection接口主要定义了Item属性。
4.6 yield语句
yield主要是方面创建枚举器。yield return语句返回集合的一个元素,并移动到下一个元素上。yield break可停止迭代。在包含yield语句的方法或属性叫做迭代块。迭代快必须声明返回IEnumerator或者IEnumerable接口。一个块中可以包含多个
yield return,yield break语句,但不能包含return语句。下面为实例:
yield示例
#region yield示例
public class HelloCollection
{
public IEnumerator GetEnumerator()
{
yield return "Hello";
yield return "World";
}
}
#endregion
HelloCollection hello = new HelloCollection();
foreach(string s in hello)
{
Console.WriteLine(s);
}
public class HelloCollection
{
public IEnumerator GetEnumerator()
{
yield return "Hello";
yield return "World";
}
}
#endregion
HelloCollection hello = new HelloCollection();
foreach(string s in hello)
{
Console.WriteLine(s);
}
小结:本章节就写到这些,写的有点过于简单,希望见谅。下一章节为运算符和转换