委托


     前几天用C#做了一个小系统,有一个异面刷新的功能,我借助网络和自己的理解,总算是用委托实现了那个功能。至于为什么这么用我还是不理解。

    学习一部分内容,无非就是要弄懂是什么,怎么实现的。学习大话设计模式中委托的时候,就记住猫叫老鼠跑了,是要说明什么,好多东西都没有领悟到。


    这几天对委托再次学习,重新认识了一下,分享出来。


1,委托是什么?

    简单理解,委托是将方法作为其他方法的参数。


2,什么时候用委托?

    一个方法在其他方法中使用时。

    也就是说使用委托的前提是被委托的方法已经存在。


    拿大话设计上的猫叫老鼠跑的例子说吧(代码有改动,)。

/// <summary>
    /// 声明委托
    /// </summary>
    public delegate void CatMouse();


    class Program
    {
        static void Main(string[] args)
        {
            
            Cat cat = new Cat();//实例化猫
            cat.Shout();//猫叫
           
            Console.ReadKey();
        }
    }


    /// <summary>
    /// 猫类
    /// </summary>
    public class Cat
    {
       /// <summary>
       /// 猫叫
       /// </summary>
        public void Shout()
        {
            Console.WriteLine("喵");

            CatMouse catmouse = new CatMouse(Mouse.Run);//实例化具有让老鼠跑的委托
            catmouse();
        }

    }
    /// <summary>
    /// 老鼠
    /// </summary>
    public static class Mouse
    {
        /// <summary>
        /// 老鼠跑
        /// </summary>
        public static void Run()
        {
            Console.WriteLine("跑");
        }
    }

     使用委托就是在猫叫的方法中使用了一下老鼠跑的方法。这里用的是老鼠跑的方法,我们完全可以用其他的一个或多个方法,这也就是委托的灵活性。

     如果不使用委托的话,想要实现猫叫狗跑的操作得判断猫是不是叫,加个if判断。


3,怎么用委托

  (本实例用C#异面刷新功能,即添加用户窗体添加完用户后,去刷新显示用户的另一个界面)

1)声明委托。

//声明委托
public delegate void myRef();

2)先写好要委托事的方法,也就是作为参数的方法。

   刷新GridView的方法

private void refreshDGV() {

   //刷新的代码

 }


3)实例化委托,同时将要委托的方法作为参数

myRef mr = new myRef(refreshDGV); //实例化委托



   以上代码都是在显示用户的窗体中。要想在添加用户的界面中使用委托要为窗体添加一个属性。

   代码如下:

 public partial class frmAddUser : Form
{
      private frmmanageUser.myMethodRef mre;//委托类型的属性
      public frmAddUser(frmmanageUser.myMethodRef _mr)//构造函数,带委托参数
      {
         InitializeComponent();
         this.mre = _mr;
      }
 
      //其他方法略
}

4)调用委托

  //调用委托,刷新frmmanagerUser界面      
  mre();


   以上就是我对委托的总结,随着以后的学习肯定会对此有更深的认识,到时候再补上。。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值