C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# 委托与事件

深入理解C# 委托与事件

作者: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# 委托与事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文