迭代器
迭代器是可以返回相同类型的值的有序序列的一段代码,可用作方法、运算符或get访问器的代码体。
迭代器代码使用yieid return语句依次返回每个元素,yieid break语句将终止迭代。迭代器的返回类型必须为IEnumerable或IEnumerator中的任意一个。
//出啊构建一个名为Family的类,其继承IEnumerable接口 public class Family :System.Collections.IEnumerable { //创建一个string类型的数组用于存储家庭成员 string[] MyFamily={"父亲","母亲","弟弟","妹妹"} //对IEnumerator接口实现GetEnumerator方法创建迭代器 public System.Collections.IEnumerator GetEnumerator() { for(int i=0; i<MyFamily.Length;i++) { yieid return MyFamily[i];//使用yieid return语句依次返回每个元素 } } } private void Form1_Load(object sender,EventArgs e) { Family myFamily =new Family(); foreach(string str in myFamily) { richTextBox1.Text+=str+" "; } }
分布类
可以见那个类、结构或接口的定义拆分到两个或多个源文件中。每个源文件包含类定义的一部分,编译应用程序时Visual Studio会把所有部分组合起来。这样的类就是分布类。
定义分布类时需要使用partial关键字,分布类的每个部分都必须包含一个partial关键字,并且其声明必须与其他部分位于同一个命名空间。分布类定义不能跨越多个模块。
在设置分布类时,各个部分必须具有相同的可访问性,如public、private等。
文件流
FileStream类主要用于读写磁盘文件。常用于向磁盘存储数据或读取配置文件。
内存流
MemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们。
缓存
缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能。
枚举
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。
C# 枚举是值数据类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
IEnumerator接口
IEnumerator 是所有非泛型枚举数的基接口。
支持对非泛型集合的简单迭代。
命名空间:System.Collections
程序集:mscorlib(在 mscorlib.dll 中)
线程
每个在操作系统上运行的应用程序都是一个进程,一个进程可以包括一个或多个线程。
线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。
单线程就是只有一个线程。默认情况下,系统为应用程序分配一个主线程,该线程执行程序中以Main方法开始和结束的代码。
多线程:在具有一个处理器的计算机上,多线程可以通过利用用户事件之间很小的时间段在后台处理数据来达到这种效果。
优点:1、将耗时较长的操作(网络请求、图片下载、音频下载、数据库访问等)放在子线程中执行,可以防止主线程的卡死;2、可以发挥多核处理的优势,提升cpu的使用率。