【C#学习笔记】第十三章总结

《C#入门经典第七期》第十三章书后总结

名称空间限定符

为了避免名称空间限定的模糊,可以使用::运算符强制编译器使用已创建的别名。还可以使用global名称空间作为顶级名称空间的别名。

定制异常

从根类Exception中派生,就可以创建自己的异常类。

事件处理

许多类提供了事件,在代码中发生某个触发器时,就会引发事件。可以编写处理程序,在引发事件时执行代码。

事件定义

可以定义自己的事件类型,给事件的处理程序创建指定的事件和委托类型。可以使用标准的、无返回类型的委托类型和派生于System.EventArgs的定制事件产生,使事件处理程序有多种用途。还可以使用EventHandler和EventHandler委托类型。

匿名方法

在添加事件处理程序的地方直接定义要引发事件时执行的代码,需要用delegate关键字定义匿名方法。

特性

通过使用[AttributeName]语法,可以向类、方法和其他成员添加特性;通过从System.Attribute派生,可以创建自己的特性。通过反射可以读取特性值。

初始化器

可以使用初始化器创建对象或集合的同时初始化它们。包括了一个花括号中的代码块。对象初始化器可以提供一个逗号分隔的属性名/值队列表,来设置属性值。集合初始化器仅需逗号分隔的值列表。使用对象初始化器时,还可以使用非默认构造函数。

类型推理

声明变量时,使用var关键字可以忽略变量的类型。但只有类型可以在编译期间确定时才能这么做。

匿名类型

使用匿名类型,其成员根据用途来推断。使用对象初始化器语法来定义匿名类型,每个设置的属性都定义为只读属性。

动态查找

使用dynamic关键字定义动态类型变量,可以存储任意值。可以使用一般的属性或方法语法来访问该变量中包含的值的成员,这些成员仅在运行时剑纯。尝试访问不存在的成员,就会抛出一个异常。实现IDynamicMetaObejectProvider接口,可以控制动态查找的行为。

可选的方法参数

为没有指定值的参数提供默认值就可以定义可选的方法参数。调用方法的代码可以仅指定需要的参数。

命名的方法参数

可以根据位置或名称(或者根据位置和名称,但是位置参数要放前面)来指定方法的参数。明明的参数可按任意顺序指定。

Lambda表达式

Lambda表达式是定义匿名方法发一种快捷方式。而还能隐式的类型化。定义Lambda表达式时,需要使用逗号分隔的参数列表(如果没有参数,就使用空括号)、=>运算符和一个表达式。表达式可以是放在花括号中的代码块。Lambda表达式之多可以有8个参数和一个可选的返回类型,Lambda表达式可以用Action、Action<>和Func<>委托类型来表示。许多可用于集合的LINQ扩展方法都使用Lambda表达式参数

你可能感兴趣的:(C#学习笔记)