摘要:
5.1不完整类型声明 新类型修饰符partial,用于在多个部分定义同一个类型。为了确保与现存程序的兼容性,这个修饰符和其他修饰符不同,它不是一个关键字,且它必须紧邻在关键字class、struct、interface之前。 不完整类型声明的每一部分都必须包含partial修饰符,且其他部分必须在同 阅读全文
摘要:
4.1迭代器块 迭代器块就是产生值的有序序列的语句块,迭代器块通过一个/多个yield语句区别于常规语句: -yield return 语句产生迭代的下一个值 -yield break 语句指明迭代完成 迭代器块可以用做一个方法体、运算符体、访问器体,前提是对应函数成员的返回类型是枚举器接口之一/可 阅读全文
摘要:
3.1匿名方法表达式 匿名方法表达式是具有特定转换规则的值,它定义了匿名方法,并得到引用该方法的一个具体值,这个值没有类型,但它可以被隐式转换到与之兼容的委托类型;匿名方法表达式为参数、局部变量、常数定义了一个新的声明空间,并且为标签定义了一个新的声明空间。 3.2匿名方法签名 可选的匿名方法签名, 阅读全文
摘要:
2.1泛型类型声明 泛型类声明是一种类声明,只不过它比类多声明类型参数列表和类型参数约束语句。 只有提供类型参数列表,这个类声明才能提供类型参数化约束语句;提供了类型参数列表的类声明就是一个泛型类声明,此外任何嵌入到泛型类声明/泛型结构声明中的类,自身也是一个泛型类声明,因为它们必须提供包含类型的类 阅读全文
摘要:
以前的十八章都是C#1.0所引入的内容,接下来写C#2.0引入的几项语言扩展,2.0引入的重要的是泛型、匿名方法、迭代器、不完整类型: 泛型:可以让类、结构、接口、委托和方法通过它们所存储和操作的数据的类型被参数化;它们提供了更强的编译时类型检查,减少了显示转换,装箱操作和运行时类型检查; 匿名方法 阅读全文
摘要:
前面有写到过,核心C#语言没有将指针引入它所支持的数据类型,从而与C和C++有着显著的区别。作为代替,C#提供了各种引用类型,并能创建可由垃圾回收器管理的对象。这就使得C#比C或C++安全的多。 在核心C#语言中,干脆就不可能有未初始化的变量、"虚"、超过数组边界对其进行索引的表达式,这样C和C++ 阅读全文
摘要:
C#语言的一个重要特征就是使程序员能够为程序中定义的各种实体附加一些说明信息,比如类中方法的可访问性就是通过可访问修饰符来指定的;C#使程序员可以创造说明性信息的新的种类,这就是特性;创造的特性可以附加到各种程序实体,而且在运行时环境中还可以检索这些特性信息。比如:一个框架可以定义一个名为HelpA 阅读全文
摘要:
C#的异常用于处理系统级或应用程序级的错误状态,它是一种结构化的、统一的和类型安全的处理机制。C#的异常机制非常类似于C++的异常机制,但有一些重要的区别: 1.在C#中,所有异常都必须从System.Exception派生的类类型的实例来表示;而在C++,可以使用任何类型的任何值表示异常; 2.在 阅读全文
摘要:
委托是用来处理其他语言使用函数指针解决问题时的对应办法。不过不同于C++的函数指针,委托是完全面对对象的;另外C++指针仅指向成员函数,而委托同时封装了对象实例和方法。 委托定义了一个从System.Delegate类派生的类。委托实例封装一个调用列表,该列表列出一个或多个方法,其中每个方法均作为一 阅读全文
摘要:
枚举类型是一种独特的值类型,它用于声明一组命名的常数。 14.1枚举声明 枚举声明以关键字enum开始,然后定义枚举的名称、可访问性、基础类型和成员。 每个枚举类型都有一个对应的整型,称为该枚举类型的基础类型。此基础类型必须能表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明byte、sbyte 阅读全文