基础知识系列☞C#中→委托

 

有些.NET中的高级特性,比如:委托!
有一种怎么也搞不懂的赶脚...
博客读了好几篇,代码也动手写了,书中的一些介绍也看了,
各种搜索关于委托的,至今还处于"会用"的阶段。
该怎么研究一个高级特性,这是个问题。
还是本来这些特性,你会用就可以了?

 

语言越多,感觉会越迷惑,
自己想用最少的语言,
最多的代码来总结下委托这个东西;

 

0delegate
1、类似于C++中的函数指针,安全的函数指针,提供了程序回调指定方法的机制。

2/委托既可以接受实例方法,也可以接受静态方法;
复制代码
using System;

namespace _IT200.第6章_高级特性
{
    //这是一个委托,就这么简单的声明了,然后知道怎么用就可以了.
    //就像年龄小的时候,不会喝酒,长大了喝几次就会喝了...你和委托也就是差一个醉了...
    public delegate void 委托我来监视这是第几个方法(int i);
    class 委托
    {

        public void method(int i)
        {
            Console.WriteLine("这是第{0}个方法..", i);
        }
        //静态方法
        public static void method_static(int i)
        {
            Console.WriteLine("这是第{0}静态方法...", i);
        }
        static void Main()
        {
            Console.WriteLine("委托...");
            委托 w = new 委托();
            //接受实例方法
            委托我来监视这是第几个方法 委托实例 = new 委托我来监视这是第几个方法(w.method);
            //接受静态方法
            委托我来监视这是第几个方法 委托实例_1 = new 委托我来监视这是第几个方法(method_static);
            //本质上,委托的调用其实就是执行了在定义委托时所生成的Invoke方法
            委托实例(0);
            //Invoke转到定义是指向→"委托我来监视这是第几个方法"
            //Why?因为这个方法是由C#编译器自动帮我们完成的,可以通过Reflector验证一下↓
            //:会发现还包含一个名为BeginInvoke和EndInvoke的方法。
            委托实例.Invoke(1);
            //委托实例(2); == 委托实例.Invoke(2);
            Console.ReadKey();
        }
    }

}
复制代码

运行结果:

 

posted @   zh89233  阅读(325)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示