C#数组
本随笔为我的复习巩固知识用,多从书上总结与理解概括得来,若有错误麻烦指正异步
数据简单来讲就是将一连串相同类型的的数据按顺序保存起来的容器。数组中的数值类型默认为0,引用类型默认为null。数组的索引从0开始,具备n个元素的数组的缩影为从0~n-1。学习
1.数组的建立this
//声明一个用于存储int类型的一维数组并赋值 int[] array1 = new int[2]; array1[0] = 1; array1[1] = 2; //声明同时赋值 int[] array2 = new int[] { 1, 9, 5, 7, 3 }; //另外一种声明方式 int[] array3 = { 1, 2, 3, 4, 5, 6 }; //声明二维数组 int[,] multiArray = new int[2, 3]; multiArray[0, 0] = 1; multiArray[0, 1] = 2; //声明同时赋值 int[,] multiArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };
2.数组的遍历spa
数组是从抽象类array派生的引用类型。因为此类型实现类IEnumerable接口的IEnumerator,所以能够对C#中全部数组使用foreach迭(die)代。code
打字的时候还有些字打不出来(一直以来都读错了),个人输入法能够用分号+x的形式开手写,遇到一些状况能够考虑一下。blog
int[] array = new int[] { 1, 2, 3, 4, 5 }; //用for遍历 for(int i = 0; i < 5; i++) { Console.WriteLine(array[i]); } //用foreach遍历 foreach(int n in array) { Console.WriteLine(array[n]); }
3.迭代器继承
除了普通的数组,不少操做数组的泛型类都支持foreach,好比List,Dictionary等,除此以外咱们也能够对任何自定义的类型使用foreach,前提是继承了IEnumerable接口(这个接口有泛型和非泛型两版本)。索引
非泛型接口的GetEknumerator示例接口
class IntList : System.Collections.IEnumerable { int[] numbers = null; //foreach遍历的数组 public int this[int index] //索引器 { get { return numbers[index]; } set { numbers[index] = value; } } public int Length { get { return numbers.Length; } } public IntList(int length) { numbers = new int[length]; } public System.Collections.IEnumerator GetEnumerator() //重写接口方法 { return numbers.GetEnumerator(); } } class Program { static void Main(string[] args) { IntList list = new IntList(10); //实例化 for(int i = 0; i < 10; i++) { list[i] = i; //赋值0~9 } foreach(var n in list) //foreach循环 { Console.WriteLine(n); //输出0~9 } } }
4.var
在后面一个foreach循环中使用到了var,个人参考书中并无说明,在学习了解后,找到相关说明
var:根据所赋值数据推断出类型
var v1=1; //int
var v2="2"; //string
var v3='3'; //char
var v4=true; //bool
在unity中,能够经过对迭代器的运用实现相似异步的效果,以后会另开篇章说一下。