zoukankan      html  css  js  c++  java
  • 委托

    委托就是定义了方法的类型,就想"hello" 的类型是String 类型一样。

    例如:下面的委托例子

     1 namespace delegate_tesst
     2 {
     3     public delegate void SayDelegate(string name);
     4     public class ClassPeople
     5     {
     6         public void saychinese(string name)
     7         {
     8             Console.WriteLine("你好,"+name );
     9         }
    10         public void sayenglish(string name)
    11         {
    12             Console.WriteLine("hello ,"+name);
    13         }
    14         public void dowork(string name, SayDelegate MakeSay)//此方法它接收一个SayDelegate类型的方法做为参数
    15         {
    16             MakeSay(name);
    17         }
    18     }
    19     class Program
    20     {
    21         static void Main(string[] args)
    22         {
    23             ClassPeople c1 = new ClassPeople();
    24             //委托
    25             Console.WriteLine("下面是委托:");
    26             SayDelegate saymethod1 = c1.saychinese;
    27             SayDelegate saymethod2 = c1.sayenglish;
    28             c1.dowork("张三", saymethod1);
    29             c1.dowork("zhangsan", saymethod2);
    30 
    31 
    32             //多播委托
    33             Console.WriteLine("下面是多播委托:");
    34             SayDelegate saymethod = c1.saychinese;
    35             saymethod += c1.sayenglish;
    36             c1.dowork("zhangsan",saymethod);
    37             
    38             Console.ReadKey();
    39         }
    40     }
    41 }

    我们声明了委托,和多播委托。这里方法的类型就是SayDelegate类型。
    他和我们以前定义的对象区别在于:

      以前我们定义的对象都包含数据,而委托包含的只是方法的地址。

  • 相关阅读:
    C# Brush Color String 互相转换
    WPF Binding ElementName方式无效的解决方法--x:Reference绑定
    WPF动画应用-几何图形扩散动画
    Timer更新UI的合理办法
    员工管理
    EF CodeFirst 实例Demo
    C# 星期相关代码实例
    WPF Canvas实现进度条
    DispatcherTimer 应用实例
    数据库操作命令
  • 原文地址:https://www.cnblogs.com/yinyakun/p/3232979.html
Copyright © 2011-2022 走看看