C#委托的理解

最近准备换下工作,想着接下来要进行面试,肯定少不了各种知识点的询问。趁这个机会把各个知识点都回顾下。

今天抽出时间复习下委托的概念。准备从下面几个点来讲下。

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

你可能感兴趣的:(C#委托的理解)