美文网首页
C#委托学习笔记

C#委托学习笔记

作者: 毛孩文森特 | 来源:发表于2018-12-08 10:56 被阅读6次

    什么是委托

    委托(Delegates)是C#中一种特别的类型,它可以引用具有指定参数类型和返回类型的方法。
    比如public delegate int MyDelegate (string s)
    它可以用来引用一个方法(该方法具有string类型参数和int返回值)

    怎么用

    贴一下官方的示例

    using System;
    delegate double Function(double x);
    class Multiplier
    {
        double factor;
        public Multiplier(double factor) 
        {
            this.factor = factor;
        }
        public double Multiply(double x) 
        {
            return x * factor;
        }
    }
    class DelegateExample
    {
        static double Square(double x) 
        {
            return x * x;
        }
        static double[] Apply(double[] a, Function f) 
        {
            double[] result = new double[a.Length];
            for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);
            return result;
        }
        static void Main() 
        {
            double[] a = {0.0, 0.5, 1.0};
            double[] squares = Apply(a, Square);
            double[] sines = Apply(a, Math.Sin);
            Multiplier m = new Multiplier(2.0);
            double[] doubles =  Apply(a, m.Multiply);
        }
    }
    

    Apply方法将参数double[] a应用给Function f,这里的f就是一个委托。你可以传入一个方法(它需要具有double类型参数和double类型返回值),比如示例代码中的SquareMath.Sinm.Multiply

    有什么用

    C#是一门强类型的语言。函数的参数必须要有严格的类型。而且也是不允许直接把函数作为另一个函数的参数的。我们可以用委托传递回调函数。

    心得体会

    感觉就如同函数指针,但是对函数的参数和返回值类型有了约束,更加安全。

    相关文章

      网友评论

          本文标题:C#委托学习笔记

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