C#日记——委托

作者: 饥渴计科极客杰铿 | 来源:发表于2016-06-09 16:43 被阅读67次

很多人说C#和JAVA很像,但也有很多地方不同,委托就是一个C#特有的东西
委托可以理解为C语言里的函数指针,只要参数和返回类型一致就可以指向它,但只有委托(delegate)是不够的必须要配合事件(event)来完成
可以理解为委托只是把某个方法放进去,然后赋值给事件,调用事件就是调用那个方法

举个例子

首先新建一个类

类里写好委托和事件,还有要委托的方法(其实也可以在主类里定义要委托的方法)
现在我写一个如果数值改变就反应的类

class EventTest{
        private int value;
        //只能委托参数和返回值都是空的方法
        public delegate void NumManipulationHandler();
        //ChangeNum只接受被NumManipulationHandler委托的方法
        public event NumManipulationHandler ChangeNum;
        public EventTest(int n){
            SetValue(n);
        }
        protected  void OnNumChange(){
            //如果ChangeNum有委托方法则执行委托方法,没有就执行else的内容
            if(ChangeNum!=null){
                ChangeNum();
            }else{
                Console.WriteLine("Event fired!");
            }
        }
        public void SetValue(int n){
            //数字不同就调用OnNumChange方法
            if(value!=n){
                value=n;
                OnNumChange();
            }
        }
        //要委托的方法
        public static void EventFired(){
            Console.WriteLine("Bind Event Fired!");
        }
    }

然后在主的类里委托

class Program
    {
        
        public static void Main(string[] args)
        {
            EventTest et=new EventTest(5);
            et.SetValue(100);
            //委托Eventtest的EventFired方法赋值给ChangeNum
            et.ChangeNum+=new EventTest.NumManipulationHandler(EventTest.EventFired);
            et.SetValue(50);
            et.SetValue(60);
            Console.ReadLine();
        }
        
        
    }

输入结果

Event fired!
Event fired!
Bind Event Fired!
Bind Event Fired!

前两个是没有委托的,后面是有委托的

相关文章

  • C#日记——委托

    很多人说C#和JAVA很像,但也有很多地方不同,委托就是一个C#特有的东西委托可以理解为C语言里的函数指针,只要参...

  • C# 委托

    C#委托 C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的...

  • 教小明学一点点编程—C#篇(0)

    像小明这样使用C#的新同学,一定都会被C#的复杂的委托事件机制所困惑,那么我们不如解释一下什么是C#中委托。 委托...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • 2020-02-19

    C# 委托 (一)—— 委托、 泛型委托与Lambda表达式 原创wnvalentin 最后发布于2018-08-...

  • (转).NET面试题系列[7] - 委托与事件

    委托和事件 委托在C#中具有无比重要的地位。 C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括...

  • 委托及其用法

    C#委托使用详解(Delegates) 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说...

  • C# 高级语言总结

    后续 1 C# 委托 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 ...

  • C#匿名方法、Lambda表达式和各种泛型委托

    Linq查询与高级C#编程机器理论研究基础 C#委托解决的是对象之间的逆向传递问题,其次,委托还有其他的用途(匿名...

  • C#中的委托是用来干嘛的

    在C#中我们会听到一个概念——委托。那么委托是个什么鬼,用来干嘛的呢?最近有些空闲时间就写一下C#中委托相关的知识...

网友评论

    本文标题:C#日记——委托

    本文链接:https://www.haomeiwen.com/subject/dcxsdttx.html