C#中匿名方法与委托的关系介绍

当对2个数实现加减乘除,其中的一个解决方案是通过委托来实现。如下:

    class Program
    {
        private delegate int CaculateDel(int num1, int num2);
        static void Main(string[] args)
        {
            CaculateDel caculateDel = Add;
            Console.WriteLine(caculateDel.Invoke(1,2).ToString());
            Console.ReadKey();
        }
        static int Add(int num1, int num2)
        {
            return num1 + num2;
        }
    }

以上,把Add方法赋值给了CaculateDel类型的委托变量。

如果用匿名方法来实现,就是:

    class Program
    {
        private delegate int CaculateDel(int num1, int num2);
        static void Main(string[] args)
        {
            CaculateDel caculateDel = delegate(int num1, int num2)
            {
                return num1 + num2;
            };
            Console.WriteLine(caculateDel.Invoke(1,2).ToString());
            Console.ReadKey();
        }
    }  

可见,匿名方法就是委托,使用匿名方法有了更好的灵活性,不需要事先把方法写"死"。

如果我们使用System.Diagnostics的Stopwatch的实例方法Reset、Start、Stop等来重置、开始、结束Stopwatch,用Stopwatch的ElapsedTickes属性来显示时间,我们可以发现匿名方法的效率比较高。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • C#实现读取匿名对象属性值的方法示例总结

    本文实例讲述了C#实现读取匿名对象属性值的方法.分享给大家供大家参考,具体如下: 通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值. var objUser = new {Name="Lilei",Age=18 }; //此时可直接读取匿名类属性 Console.WriteLine("Name:" + objUser.Name);// Name:Lilei 但当将匿名对象转换成object后,就无法直接读取属性值了: static object Ge

  • C# 匿名方法基础回顾

    目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ≥ C# 3.0 的版本中,我们会用 Lambda 表达式进行取代匿名方法,并且用 Lambda 表达式作为编写内联代码的首选方式,因为它更简洁. 匿名方法是,顾名思义,匿名方法就是没有名称的方法.匿名方法最明显的好处就是:可以降低额外另写一个方法的工作量:另外一个好处就是可以直接访问调用者的变量,从而降低传参的复杂度. 匿名方

  • C#警惕匿名方法造成的变量共享实例分析

    本文实例讲述了C#警惕匿名方法造成的变量共享.分享给大家供大家参考,具体如下: 匿名方法 匿名方法是.NET 2.0中引入的高级特性,"匿名"二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如: static void Test() { Action<string> action = delegate(string value) { Console.WriteLine(value); }; action("Hello Wor

  • C#实现在匿名方法中捕获外部变量的方法

    先来一段代码引入主题.如果你可以直接说出代码的输出结果,说明本文不适合你.(代码引自<深入理解C#>第三版) class Program { private delegate void TestDelegate(); static void Main(string[] args) { TestDelegate[] delegates = new TestDelegate[2]; int outside = 0; for(int i = 0; i < 2; i++) { int insid

  • C#基础之匿名方法实例教程

    本文以实例形式讲解了C#的匿名方法的用法,分享给大家供大家参考之用.具体如下: 匿名方法是C# 2.0的语言新特性.首先看个最简单的例子: class Program { static void Main(string[] args) { List<string> names = new List<string>(); names.Add("Sunny Chen"); names.Add("Kitty Wang"); names.Add(&q

  • C#用匿名方法定义委托的实现方法

    本文实例讲述了C#用匿名方法定义委托的实现方法.分享给大家供大家参考.具体实现方法如下: //用匿名方法定义委托 class Program { delegate string MyDelagate(string val); static void Main(string[] args) { string str1 = " 匿名方法外部 "; //中括号部分定义来了一个方法,没有名称,编译器会定指定一个名称 MyDelagate my = delegate(string param)

  • C#中的匿名方法实例解析

    本文较为详细的讲述了C#中的匿名方法,并附上实例加以说明.现将其分享给大家供大家参考之用.具体分析如下: 首先,C#中的匿名方法是在C#2.0引入的,它终结了C#2.0之前版本声明委托的唯一方法是使用命名方法的时代.虽然在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式.但是,匿名方法的信息同样也适用于 Lambda 表达式,可以说 Lambda 表达式就是匿名方法演变过来的. 我们可以使用匿名方法来忽略参数列表. 这意味着匿名方法可转换为具有各种签名

  • c# 匿名方法的小例子

    复制代码 代码如下: // Create a handler for a click event.button1.Click += delegate(System.Object o, System.EventArgs e)                   { System.Windows.Forms.MessageBox.Show("Click!"); }; // Create a delegate.delegate void Del(int x); // Instantiate

  • C#中匿名方法与委托的关系介绍

    当对2个数实现加减乘除,其中的一个解决方案是通过委托来实现.如下: class Program { private delegate int CaculateDel(int num1, int num2); static void Main(string[] args) { CaculateDel caculateDel = Add; Console.WriteLine(caculateDel.Invoke(1,2).ToString()); Console.ReadKey(); } stati

  • 初步认识C#中的Lambda表达式和匿名方法

    写在前面 元旦三天在家闲着无事,就看了看Linq的相关内容,也准备系统的学习一下,作为学习Linq的前奏,还是先得说说Lambda与匿名方法的知识点.也算是对知识点的查漏补缺吧,也许你会说这没啥大不了的,项目中都在用,但是有些知识,你回头在查看的时候,总会有那么点不一样的收获,这点我是感同身受的,我看书有个习惯,一本书,我能看个三四遍,每次总会有收获.当然,你可以说,当时肯定没认真看,不是那样子的,我认为最直接的原因在于,当时你看是看,没有在真正的项目中遇到过,所以你心里对它的理解并不深,如果在

  • python中__init__方法知识点详解

    目录 介绍__init__方法的作用 讲解__init__方法的语法 演示如何在类中使用__init__方法初始化类的属性 讲解如何使用__init__方法给对象动态添加属性 __init__方法的多态特性 __init__和super的用法 提醒注意事项 总结 介绍__init__方法的作用 __init__ 方法是 Python 中面向对象编程中类的特殊方法,也称为构造方法,当创建一个类的实例时,__init__ 方法会自动调用. 它的主要作用是初始化实例的属性,在实例被创建后,你可以通过这

  • python中__init__()方法详情

    目录 python类中定义的函数称为方法, init ()方法本质也是一个函数.这个函数的作用是初始化实例后的对象. 具体如下例: init()方法的作用是初始化实例后的对象cqueue. class CQueue: 类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用.若类定义了__init__()方法,类的实例化操作会自动调用__init__方法. __init__方法可以有参数,参数通过__init__()传递到类的实例化操作上.self代表的是类的实例,而非类. 类

  • vue2中组件互相调用实例methods中的方法实现详解

    目录 前言: 开始前: 使用 第一步.定义全局mixin 第二步添加代码提示d.ts声明文件 在项目下新建jsconfig.json 添加shims-vue.d.ts声明文件 添加event-keys.d.ts声明文件 第三步编写webpack插件 新建global-dispatch.js 自动生成event-keys.d.ts 添加vue-path-loader.js webpack loader文件 配置vue.config.js 后记 仓库地址 总结 前言: 大家都知道在vue2中相互调用

  • 探讨:如何使用委托,匿名方法对集合进行万能排序

    下面Demo中我使用了2种排序方式1.让Employee继承IComparable 接口,实现CompareTo方法排序2.定义一个方法使用Comparison<T>委托,排序的操作交给匿名方法 看完下面的代码,你知道使用Comparison<T>委托的好处吗? 复制代码 代码如下: class Employee:IComparable    {        public string Name { get; set; }        public int Age { get;

随机推荐