今天学习了委托和事件。
委托:委托是一个类,它定义了方法的类型,与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用,委托声明定义一个从 System.Delegate 类派生的类,委托实例封装了一个调用列表,该列表列出了一个或多个方法,每个方法称为一个可调用实体。
委托的定义:委托是一种引用方法的类型。 一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,委托是函数的封装,它代表一“类”函数,它们都符合一定的签名:拥有相同的参数列表、返回值类型。同时,委托也可以看成是对函数的抽象,是函数的“类”。此时,委托的实例将代表一个具体的函数。
委托的声明:定义和使用委托有3个步骤,1.声明 2.实例化 3.调用,可以在定义类的任何地方定义委托,声明委托类型就是告诉编译器这种类型代表了哪种类型的方法,委托匹配方法中的参数可以是ref, out, params,在声明委托的同时也必须指定参数的类型。
委托的调用:委托实例名(实参列表),通过委托对象的名称(后面跟着要传递给委托的参数,放在括号内)调用委托对象,委托对象是不可变的,即设置与它们匹配的签名后就不能再更改签名了,但关联的方法可以重新指定,参数形式为ref, out, params 时,在声明委托时也必须显式指出参数类型。
委托也可以包含多个方法,这种委托称为多播委托:如果调用多播委托实例,则按顺序依次调用多播委托实例封装的调用列表中的多个方法,声明多播委托时,其返回类型必须为void,因为无法处理多次调用的返回值,而且不能带输出参数(但可以带引用参数),多播委托通过 + 或 += 向多播委托实例封装的调用列表中添加方法,通过 – 或 -= 从多播委托实例封装的调用列表中删除方法。
现在学的有点深奥,理解有点吃力,越来越难,还需要通过看录制的视频继续学习。