最近准备换下工作,想着接下来要进行面试,肯定少不了各种知识点的询问。趁这个机会把各个知识点都回顾下。
今天抽出时间复习下委托的概念。准备从下面几个点来讲下。
1.什么是委托?
委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托实例调用方法。(通俗来说就是委托用于将方法作为参数传递给其他方法)。
2.怎么创建委托?
//第一步:声明委托类型
public delegate int name(); //无参数
public delegate int name(int i,int y); //有参数
public delegate 返回值类型 委托名(参数);//声明格式
//第二步:创建方法
public int num(int i, int y)
{
return i + y;
}
//第三步:实例化委托
name text = num;
//第四步:调用委托
int count = text(1, 3);
//输出count=4.
3.委托的好处。
第一点:委托类型是安全可靠的,且是面向对象,这是与C/C++不同之处。
第二点:委托能减少代码中的IF/Switch,提高代码简洁性和可读性。
还有什么优点暂时没有想到,欢迎评论补充。
4.委托和事件怎么选择?
委托和事件都可以完成相识的功能,如定阅单个和多个服务器方法。选择用哪个来实现,主要看应用场景。
如果不需要调用服务器端的方法时选择事件。
如果需要调用服务器端的方法时选择委托。
5.委托和接口的使用场景?
委托和接口都允许类设计器分离类型声明和实现。 任何类或结构都能继承和实现给定的接口。 可以为任何类上的方法创建委托,前提是该方法符合委托的方法签名。 接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。
在以下情况下,使用委托:
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况下,使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
当然委托还有多播的使用方法,就是多次调用方法(最后写了例子)。
public delegate int name(int i);
public int i = 10;
public int num(int y)
{
return i + y;
}
public int num1(int y)
{
return i + y;
}
name text;
name text1 = num;
name text2 = num1;
text = text1;
text += text2;
text(2);
//输出:14