记忆中的C#那些基础之数组(上)----(此文适合于新手,高手就请绕道)
很久都没写笔记了,前段时间由于工作再加上杂七杂八的事情一直没时间写,也没心情写,这段时间空下来了,有时间了,写点简单的吧,此文适合于新手,高手就请绕道。
吐槽完毕,正文开始:
一. 数组的声明
int[] myArray
二. 数组的初始化
使用new指定数组中的元素和数量来来初始化数组的变量
myArray = new int[4];
在声明和初始化数组后,变量myArray就引用了4个整型值,它们位于托管堆上,在指定了数组大小后,如果不复制数组中的所有元素,就不能重新设置数组的大小。
除了在两个语句中声明数组外,还可以在一条语句中声明数组
int[] myArray = new int[4];
还可以用数组初始化器为每个元素赋值:
int[] myArray = new int[4]{23,5,6,18};
使用花括号还可以不用指定数组的大小,编译器会自动统计数组的个数:
string[] strName = new string[]{“limits”,”fly”,”studion”};
还可以用下面简化方式进行数组声明:
string[] strName = {“limits”,”fly”,”studion”};
三. 访问数组元素
在声明和初始化数组后,就可以使用索引器访问数组的元素了,数组只支持整型参数的索引器。通过索引器传递元素编号,就可以访问数组;索引器是从0开始计数的,表示第一个数组元素,可以传递给索引器的的最大值是元素个数减1,因为索引是从0开始的。注:如果使用错误的索引器值(不存在的对应元素),就会抛出IndexOutOfRangeException类型的异常。
//初始化数组 int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 }; //使用索引器访问第二个元素 int arr1 = arrNumber[1];
不知道数组元素的个数,可以在for语句中使用Length属性来获取每个元素:
int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 }; for (int i = 0; i < arrNumber.Length; i++) { Console.WriteLine(arrNumber[i]); }
另外一种方法是使用 foreach来读取每个数组元素,效果跟for语句一样:
int[] arrNumber = new int[] { 2, 4, 6, 8, 10, 12 }; foreach (int item in arrNumber) { Console.WriteLine(item); }
四. 使用引用类型
除了声明预定义类型的数组外,还可以声明自定义类型的数组:
class Program { public class Student { //学生姓名的两个自动属性 public string firstName { get; set; } public string lastName { get; set; } //重写ToString()方法 public override string ToString() { return string.Format("{0},{1}", firstName, lastName); } } static void Main(string[] args) { //声明一个包含3个Student元素的数组 Student[] student = new Student[3]; student[0] = new Student { firstName = "Lim", lastName = "Deng" }; student[1] = new Student { firstName = "Yuchun", lastName = "Xiang" }; student[2] = new Student { firstName = "Pengfei", lastName = "Lai" }; //使用 foreach语句读出每个Student元素 foreach (var item in student) { Console.WriteLine(item); }
}
结果如下图:
从上面例子可以看出Student是存储在栈上的一个变量,改变量引用了存储在托管堆上的Student元素对应的数组,这个数组足够存放3个引用空间,数组中的每一个项都引用了Student对象,而这些Student对象都存储在托管堆上。
作者:大龄码农老邓
出处:http://limits.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过 limitswpf#163.com 联系我,非常感谢。