美文网首页
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#委托学习笔记

    什么是委托 委托(Delegates)是C#中一种特别的类型,它可以引用具有指定参数类型和返回类型的方法。比如pu...

  • 10-30学习总结

    今天学习了C#第四章委托的实例化和调用 调用: 委托实例名(实参列表); 通过委托对象的名称(后面跟着要传递给委托...

  • C# 委托

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

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

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

  • C#——委托与事件系列一

    本来应该学习泛型与委托的,但是发现C#这里还没有系统的记录过委托与事件,所以先打算把委托与事件补上再继续泛型与委托...

  • 学习记录: C#委托

    过年也不能出去浪,无聊到开始学习。其实也毕业半年多了,但是自己知道自己的水平(逼数)。 作为一本基础语法书都没看完...

  • C#委托 匿名函数 Lambda

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

  • 2020-02-19

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

  • 初探委托

    前言 虽然学习C#有段时间了,可一直没怎么接触委托,在学习多线程的时候,看到了很多委托的例子,有点不太理解,故查阅...

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

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

网友评论

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

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