zoukankan      html  css  js  c++  java
  • C#基本功------委托和事件(一)

    首先我们来看一个代码

     static void Main(string[] args)
            {
                Test(Show);
            }
            public static void Test()
            { }
    
            public static void Show() { }红色标注的地方发生了错误,显然是不能传入一个方法的,这个时候我们会想

    public static void Test(XXXX show)
    { }如果有个XXXX类型,能够让我传入一个方法,那就好了,那么,我们怎么做呢?

    委托!!!

     public delegate void Mydelegate();----我们来讲解下为什么这么写,首先delegate是声明委托的关键字viod是我们想要调用函数的返回值,明显Show的返回值是void
    括号里的内容,是我们想要调用函数的参数,显然是没有参数的,也就是说,你想要传一个方法,必须有一个方法的类型 SH其实就是Show
    static void Main(string[] args) { Test(Show); } public static void Test(Mydelegate SH) { } public static void Show() { }

    请看下面一段代码

      public delegate int  Mydelegate(int a1,int a2);
            static void Main(string[] args)
            {
                Add(Ts);-------执行1
                Console.ReadKey();
            }
            public static void Add(Mydelegate SH)----执行2
            {
                int sum = SH(1,5);----执行3
                Console.WriteLine(sum);
            }
    
            public static int Ts(int n1,int n2)
            {
                return n1 + n2;
            }
    下面改造一下这个代码
     public delegate int  Mydelegate(int a1,int a2);
            static void Main(string[] args)
            {
                int sum = Add(Ts,50,60);------想传入什么值都可以
                Console.WriteLine(sum);
                Console.ReadKey();
            }
            public static int Add(Mydelegate SH,int num1,int num2)
            {
                return SH(num1,num2);
    
            }
    
            public static int Ts(int n1,int n2)
            {
                return n1 + n2;
            }
    
    

    现在我们对于委托有了基本概念,但是,我们为什么要用委托呢?委托在什么情况下使用呢?

      public void Dosth()//这是student类中的一个方法
           {
               Console.WriteLine("吃早饭");
               //=====这里是个坑,因为我可能做的事情不一样,所以这里使用委托比较好
               Console.WriteLine("吃午饭");
           }
      static void Main(string[] args)//主函数中调用这个方法,这个时候,我们知道,我们不可能一直做一样的事情
            {
                Student stu = new Student();
                stu.Dosth();
                Console.ReadKey();
            }
    ====================================================
     
     public delegate void MyDel();//无参数无返回值的委托
    这个时候,我们将这段代码写在Dosth()这个方法的上面,shengm一个委托,我们怎么用呢?
      static void Main(string[] args)
            {
                Student stu = new Student();
                stu.Dosth(play);
                Console.ReadKey();
            }
            public static void play()
            {
                Console.WriteLine("哈哈,我可以打游戏了,我好爽,不服你打我");
            }
    
    

    显然我们是这么用的,那么,懂了吗?委托的最基本的用处就是给你在一个方法里面挖一个坑,当你需要使用这个坑的时候,把他填上就可以了

     
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    框架_爬虫如何应用(爬虫架构设计与实现)
    架构师_设计模式_结构型_代理模式
    7语法基础_CLR核心解析
    架构师_设计模式_结构型_享元模式
    架构师_设计模式_结构型_组合模式
    同源策略、跨域、Same-origin、Cross-origin
    ES(elasticsearch) query DSL 查询语法
    日志框架
    powerdesigner 名称、注释互转
    maven 可运行 jar 包的打包,包含依赖 jar 包
  • 原文地址:https://www.cnblogs.com/guyali/p/5340875.html
Copyright © 2011-2022 走看看