A, 新建winform项目【01委托】,项目中添加dg_SayHi.cs 委托类 用于存储方法  

namespace _01委托
{
    //定义委托 【类】
    delegate void dg_SayHi();
}

    B, Winfrom中添加按钮 "委托",按钮事件“btnDelegate_Click”中新建委托对象,并添加、移除 方法:

        /// <summary>
        /// 点击按钮事件
        /// </summary>
        private void btnDelegate_Click(object sender, EventArgs e)
        {
            //委托是方法的容器,可以在委托对象中添加、移除方法

            ///创建委托对象,并通过构造函数添加SayHiCN方法 
            dg_SayHi objSayHi = new dg_SayHi(SayHiCN);
            //向委托对象中 "添加" 一个方法
            objSayHi += SayHiEN;
            //从委托对象中 "移除" 一个方法
            objSayHi -= SayHiCN;

            //调用委托,委托是方法的容器 ,调用委托的时候委托里面的方法都会被调用
            objSayHi();

        }

        void SayHiCN()
        {
            MessageBox.Show("你好上海");
        }
        void SayHiEN()
        {
            MessageBox.Show("hi shanghai");
        }
    }

      C,点击“委托”,查看效果:

    【.NET基础】--委托、事件、线程(1)

    D, 一张图片解释上面的运行过程:

【.NET基础】--委托、事件、线程(1)

   

2, 委托返回类型和添加到委托的方法的返回类型保持一致

委托可以作为参数使用,传递方法。把委托对象作为参数,委托对象是方法的容器(上图中的椭圆),这样实际上就传递了方法;上面示例我们只是在委托中添加了方法,还没有把委托作为参数传递,我们看下面的示例介绍

    A, 我们有两个方法,分别是获取int数组中最大数的方法 int GetMaxNum() 和  获取int数组中最小数的方法 int GetMinNum()   

 /// <summary>
        /// 2.1  返回数组中的最大数
        /// </summary>
        /// <returns></returns>
        int GetMaxNum(int[] arr)
        {
            int numMax = arr[0];
            for (int i = 1; i < arr.Length; i++)
            {
                if (arr[i] > numMax)
                {
                    numMax = arr[i];
                }
            }
            return numMax;
        }
        /// <summary>
        /// 2.2  返回数组中的最小数
        /// </summary>
        /// <returns></returns>
        int GetMinNum(int[] arr)
        {

            int numMin = arr[0];
            for (int i = 1; i < arr.Length; i++)
            {
                if (arr[i] < numMin)
                {
                    numMin = arr[i];
                }
            }
            return numMin;
        }
View Code

相关文章:

  • 2021-06-23
  • 2021-08-21
  • 2021-09-04
  • 2022-02-02
  • 2022-01-12
  • 2021-06-15
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2022-01-22
  • 2021-06-09
  • 2022-12-23
  • 2021-12-26
相关资源
相似解决方案