C#
本随笔为个人复习巩固知识用,多从书上总结与理解归纳得来,如有错误麻烦指正
数据简单来说就是将一连串相同类型的的数据按顺序保存起来的容器。数组中的数值类型默认为0,引用类型默认为null。数组的索引从0开始,具有n个元素的数组的缩影为从0~n-1。
1.数组的创建
//声明一个用于存储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.数组的遍历
数组是从抽象类array派生的引用类型。由于此类型实现类IEnumerable接口的IEnumerator,因此可以对C#中所有数组使用foreach迭(die)代。
打字的时候还有些字打不出来(一直以来都读错了),我的输入法可以用分号+x的形式开手写,遇到一些情况可以考虑一下。
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中,可以通过对迭代器的运用实现类似异步的效果,之后会另开篇章说一下。