深入理解C# 委托与事件

 更新时间:2024年04月02日 09:23:37   作者:emplace_back  
本文主要介绍了深入理解C# 委托与事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

这是一个简单的委托样例

class TODO {
    public static void Main(String[] args) {

        Cal aa = new Cal(Add);
        Console.WriteLine(aa(2, 3));

    }

    public delegate int Cal(int a, int b);

    private static int Add(int a, int b) {
        return a + b;
    }
    private static int Dec(int a, int b) {
        return a - b;
    }

}

如此简单的应用就是函数指针的意思
委托就是我给你原材料,你给我我要的成品,至于你拿我原材料干啥,我不是深究。

于是,有一个问题,为什么我不直接调用Add或者Dec函数呢?
这就是委托最大的好处,变量分离,将不变的封装起来,隔离变化,例子如下:

class TODO {
    public static void Main(String[] args) {

        test(Add, 2, 3, 4);

    }

    public delegate int Cal(int a, int b);

    internal static void test(Cal cc, int a, int b, int c) {
        int x = 0;
        int y = 0;
        if (a > b) {
            if (a > c) {
                x = a;
            } else {
                if (b > c) {
                    y = b;
                } else {
                    y = c;
                }
            }
        } else {
            if (b > c) {
                x = b;
            } else {
                x = c;
                if (a > b) {
                    y = a;
                } else {
                    y = b;
                }
            }
        }

        int result = cc(x, y);

        Console.WriteLine(result);
    }

    private static int Add(int a, int b) {
        return a + b;
    }
    private static int Dec(int a, int b) {
        return a - b;
    }

}

我有一个方案test他的一切都是固定下来的,但是他的计算方法是多变的,因为我们可以用委托来改变传入的方法
于是我们在不改变test的情况下让他有了更多的功能

接下来就是事件

到此这篇关于深入理解C# 委托与事件的文章就介绍到这了,更多相关C# 委托与事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • HttpWebRequest出错.Section=ResponseHeader Detail=CR

    HttpWebRequest出错.Section=ResponseHeader Detail=CR

    HttpWebRequest出错.Section=ResponseHeader Detail=CR...
    2007-03-03
  • linux操作系统安装MONO执行C#程序的详解步骤

    linux操作系统安装MONO执行C#程序的详解步骤

    这篇文章主要介绍了linux操作系统安装MONO执行C#程序详解步骤,有需要的可以参考一下
    2013-12-12
  • C# wpf简单颜色板的实现

    C# wpf简单颜色板的实现

    wpf本身没有提供颜色板之类的控件,有些业务使用场景需要使用颜色板之类的控件,本文就简单实现,感兴趣的可以了解一下
    2021-10-10
  • C#上位机与三菱PLC通讯的实现步骤(图文)

    C#上位机与三菱PLC通讯的实现步骤(图文)

    这篇文章主要介绍了C#上位机与三菱PLC通讯的实现步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • C#实现装饰器模式

    C#实现装饰器模式

    这篇文章介绍了C#实现装饰器模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#利用PrintDocument定制打印单据的小例子

    C#利用PrintDocument定制打印单据的小例子

    这篇文章主要给大家介绍了关于C#利用PrintDocument定制打印单据的小例子,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 时间字符串转换成日期对象datetime的方法

    时间字符串转换成日期对象datetime的方法

    在遇到形如"2012-12-19T17:00:00Z"这样的时间字符串时,怎样转换到DateTime类型呢,下面的方法可以解决
    2013-12-12
  • WPF调用Matlab函数的方法

    WPF调用Matlab函数的方法

    这篇文章主要为大家详细介绍了WPF调用Matlab函数的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 浅析C# 索引器(Indexer)

    浅析C# 索引器(Indexer)

    这篇文章主要介绍了C# 索引器(Indexer)的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#钩子Hook监听键盘鼠标事件实现窗体自动关闭

    C#钩子Hook监听键盘鼠标事件实现窗体自动关闭

    钩子(Hook)的作用主要体现在监视和拦截系统或进程中的各种事件消息,并进行自定义处理,本文主要介绍了C#如何利用钩子Hook监听键盘鼠标事件实现窗体自动关闭功能,感兴趣的可以了解下
    2025-01-01

最新评论