构造函数
方法名与类名相同
没有返回值类型
必须要通过new的形式调用
可以重载
析构函数
用于在类销毁之前释放类实例所使用的托管和非托管资源
一般GC隐式地执行内存释放
若创建封装了非托管资源的对象,在应用程序使用完这些非托管资源之后,垃圾回收站将运行对象的析构函数(即Finalize方法)来释放这些资源
class Person
{
~Person()
{
Console.WriteLine("析构函数被调用了");
}
}
使用析构函数注意
不能在结构体中定义析构函数,只能对类使用析构函数;
一个类只能有一个析构函数;
无法继承或重载析构函数;
无法显式地调用析构函数,析构函数是有垃圾回收器自动调用的;
析构函数既没有修饰符也没有参数。
匿名函数
有两种语法风格:Lambda表达式(lambda-expression)和匿名方法表达式(anonymous-method-expression)
x => x + 1 //隐式的类型化,函数体为表达式
x => {return x + 1;} //隐式的类型化,函数体为代码块
(int x) => x + 1 //显式的类型化,函数体为表达式
(int x) => {return x + 1;} //显式的类型化,函数体为代码块
(x , y) => x * y //多参数
() => Console.WriteLine() //无参数
async (t1 , t2) => await t1 + await t2 //异步
delegate (int x) {return x + 1;} //匿名函数方法表达式
delegate {return 1 + 1;} //参数列表省略
抽象/abstract函数
class中定义但不实现
虚/virtual函数
定义且实现,子类可以重写也可以不重写