-
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中,可以通过对迭代器的运用实现类似异步的效果,之后会另开篇章说一下。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式