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属性来显示时间,我们可以发现匿名方法的效率比较高。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
C#警惕匿名方法造成的变量共享实例分析
本文实例讲述了C#警惕匿名方法造成的变量共享.分享给大家供大家参考,具体如下: 匿名方法 匿名方法是.NET 2.0中引入的高级特性,"匿名"二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如: static void Test() { Action<string> action = delegate(string value) { Console.WriteLine(value); }; action("Hello Wor
-
C#中的匿名方法实例解析
本文较为详细的讲述了C#中的匿名方法,并附上实例加以说明.现将其分享给大家供大家参考之用.具体分析如下: 首先,C#中的匿名方法是在C#2.0引入的,它终结了C#2.0之前版本声明委托的唯一方法是使用命名方法的时代.虽然在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式.但是,匿名方法的信息同样也适用于 Lambda 表达式,可以说 Lambda 表达式就是匿名方法演变过来的. 我们可以使用匿名方法来忽略参数列表. 这意味着匿名方法可转换为具有各种签名
-
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#>第三版) 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#用匿名方法定义委托的实现方法.分享给大家供大家参考.具体实现方法如下: //用匿名方法定义委托 class Program { delegate string MyDelagate(string val); static void Main(string[] args) { string str1 = " 匿名方法外部 "; //中括号部分定义来了一个方法,没有名称,编译器会定指定一个名称 MyDelagate my = delegate(string param)
-
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# 匿名方法的小例子
复制代码 代码如下: // 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;
随机推荐
- Android中设置RadioButton在文字右边的方法实例
- flex渐变色制作圆角橙色按钮示例代码
- 微信 小程序Demo导入详细介绍
- 详解SQL Server数据库状态和文件状态
- 详解Android TableLayout表格布局
- javascipt匹配单行和多行注释的正则表达式
- 使用Appcan客户端自动更新PHP版本号(全)
- MySQL性能监控软件Nagios的安装及配置教程
- 优化php效率,提高php性能的一些方法
- 实例讲解JSP Model2体系结构(中)
- JavaScript对象引用与赋值实例详解
- jQuery实现连续动画效果实例分析
- mysql 复制记录实现代码
- 必须会的SQL语句(八) 数据库的完整性约束
- SharePoint 客户端对象模型 (一) ECMA Script
- 浅析JS中document对象的一些重要属性
- Android实践之带加载效果的下拉刷新上拉加载更多
- 详解Linux中正则表达式的应用
- JDBC如何获取数据库连接
- Python提取转移文件夹内所有.jpg文件并查看每一帧的方法