- 浏览: 633961 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- 生活 (2)
- c# (37)
- 技术 (3)
- 400电话 (0)
- 400常见问题 (0)
- 400资费 (0)
- html (7)
- css (0)
- 数据库 (7)
- javascript (16)
- php (33)
- asp.net mvc2 (10)
- mysql (9)
- C# 3.0 LinQ (10)
- vs2005或vs2008 (4)
- flash and as3 (7)
- fms (1)
- dedeCMS (11)
- java (33)
- j2me (1)
- swing (1)
- c++ (1)
- jquery easyui (3)
- jquery (5)
- android (29)
- MongoDB (9)
- VtigerCRM (1)
- test (0)
- linux (30)
- nutch (2)
- SqlServer数据库 (2)
- 数据检索 (2)
- java抓取 (11)
- 乐天 (1)
- 淘宝 (1)
- Silverlight4.0 (6)
- sphinx实时索引 (5)
- ecshop (9)
- codeigniter(CI) (3)
- axure6 (1)
- 京东店铺装修教程 (2)
- xpath (1)
- joomla (2)
- bpm (1)
- Bootstrap (2)
- knockout (4)
- ecstore (4)
- css3 (1)
- 微信 (2)
- dede (0)
- soa_edi (1)
- odoo (0)
- web (1)
最新评论
-
骑着蜗牛超F1:
在ie6下报了个stack overflow at line ...
兼容ie6和ie7 的16进制码流在html中显示为图片代码(base64) -
冰之海洋:
好像少了一句代码吧? FloatingFunc.show(th ...
android 一直在最前面的浮动窗口效果 -
yanzhoupuzhang:
连接有问题!
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000) -
whatable:
唉,楼主你都没有搞清楚重量级和轻量级。。。。既然引用了SWT, ...
java swing 内置浏览器打开网页显示flash图表-swt Browser应用 -
yy_owen:
我晕啊,你链接的什么内容额,我要的iis,你链接个视频什么意思 ...
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
匿名方法是C#2.0引入的一个新特性,它允许开发者在线(inline)声明自己的函数代码而无须使用委托函数(delegate function。匿名方法通常在1. 需要一个临时方法,该方法使用次数极少;2. 这个方法的代码很短,甚至可能比方法声明都短的情况下使用。
在C# 1.1里,声明和使用委托要求你有委托和一个在委托被触发时具有匹配签名的能够执行的方法,以及一个将命名方法与委托关联的分配语句。作为C# 2.0的新特性,匿名方法基本上能够提供与先前命名方法相同的功能,但是它已经不再需要一个在关联到委托之前就明确创建的方法了。 你可以把C# 匿名方法想象为一个实现与委托进行关联这项功能的便捷途径。如果同时看一下匿名方法实现和命名方法实现所取得IL结果,你会发现这两者之间的差别非常小。 当编译器碰到匿名方法的时候,它会在类里面创建一个命名方法,并将它与委托进行关联。所以匿名方法在运行期间与命名方法的性能非常类似——性能的增加体现 在开发人员的生产效率上,而不是运行期间的执行上。
在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。C# 2.0 引入了匿名方法。
要将代码块传递为委托参数,创建匿名方法则是唯一的方法。例如:
// Create a handler for a click event button1.Click += delegate(System.Object o, System.EventArgs e) { System.Windows.Forms.MessageBox.Show("http://www.my400800.cn"); };
或
// Create a delegate instance delegate void Del(int x); // Instantiate the delegate using an anonymous method Del d = delegate(int k) { /* ... */ };
如果使用匿名方法,则不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。
例如,如果创建方法所需的系统开销是不必要的,在委托的位置指定代码块就非常有用。启动新线程即是一个很好的示例。无需为委托创建更多方法,线程类即可创建一个线程并且包含该线程执行的代码。
void StartThread() { System.Threading.Thread t1 = new System.Threading.Thread (delegate() { System.Console.Write("Hello, "); System.Console.WriteLine("http://www.my400800.cn"); }); t1.Start(); }
匿名方法的参数的范围是 anonymous-method-block 。
在目标在块外部的匿名方法块内使用跳转语句(如 goto、break 或 continue)是错误的。在目标在块内部的匿名方法块外部使用跳转语句(如 goto 、break 或 continue )也是错误的。
如果局部变量和参数的范围包含匿名方法声明,则该局部变量和参数称为该匿名方法的外部变量或捕获变量。例如,下面代码段中的 n 即是一个外部变量:
int n = 0; Del d = delegate() { System.Console.WriteLine("Copy #:{0}", ++n); };
与局部变量不同,外部变量的生命周期一直持续到引用该匿名方法的委托符合垃圾回收的条件为止。对 n 的引用是在创建该委托时捕获的。
匿名方法不能访问外部范围的 ref 或 out 参数。
在 anonymous-method-block 中不能访问任何不安全代码。
下面的示例演示实例化委托的两种方法:
-
使委托与匿名方法关联。
-
使委托与命名方法 (DoWork ) 关联。
两种方法都会在调用委托时显示一条消息。
// Declare a delegate delegate void Printer(string s); class TestClass { static void Main() { // Instatiate the delegate type using an anonymous method: Printer p = delegate(string j) { System.Console.WriteLine(j); }; // Results from the anonymous delegate call: p("The delegate using the anonymous method is called."); // The delegate instantiation using a named method "DoWork": p = new Printer(TestClass.DoWork); // Results from the old style delegate call: p("The delegate using the named method is called."); // p("欢迎访问:http://www.my400800.cn 400电话 办理网站."); } // The method associated with the named delegate: static void DoWork(string k) { System.Console.WriteLine(k); } }
输出:
The delegate using the anonymous method is called.
The delegate using the named method is called.
欢迎访问:http://www.my400800.cn 400电话 办理网站
发表评论
-
Java和C#运行命令行并获取返回值 运行bat文件
2015-08-04 10:45 1330Java运行命令行的例子 import java.io.B ... -
c#操作excel后关闭excel.exe的方法
2013-04-10 10:47 920。网上的一种说法,关闭range,关闭worksheet,关 ... -
ddd
2012-05-24 17:30 0CREATE TABLE IF NOT EXISTS `s ... -
C#里 如何序列化与反序列化 hashtable Dictionary及C#连接mysql数据库
2011-08-19 13:24 1367using System.IO; using System. ... -
C# 压缩和解压web空间中的所有文件
2011-08-18 17:20 872using System; using ICSharpC ... -
C# 压缩和解压web空间中的所有代码
2011-08-18 17:17 679using System; using ICSharpCod ... -
自己制作软键盘的几个关键技术解析
2011-05-26 08:40 1077在嵌入式应用和一些安全软件中经常需要不通过物理键盘输入,虽然微 ... -
rtertert
2011-03-22 17:29 0fffffffffffffffffffffffff ... -
C#发送邮件时在正文中插入图片(邮件中直接包含图片)
2011-01-17 16:12 2412#region 发送邮件 ... -
c#生成Excel,可建立sheet,设定sheet名称,调整列宽度
2010-12-17 16:18 2698Excel生成类 ExcelRW.cs usin ... -
关于AutoResetEvent的使用
2010-12-16 17:21 915AutoResetEvent 允许线程通过发信号互相通信。 ... -
C# 取得函数的调用关系
2010-11-25 08:47 1581如何取得C ... -
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
2010-11-18 09:47 91331iis7.0官方安装包下载 iis7时微软为新一代web服务 ... -
简易的文件磁盘管理操作2(文件、文件夹的编辑创建删除移动拷贝重命名)
2010-11-15 17:22 907using System; using System.Dat ... -
简易的文件磁盘管理操作1(文件、文件夹的编辑创建删除移动拷贝重命名)
2010-11-15 17:21 976using System; using System.D ... -
Image和byte[]之间的转换
2010-11-11 17:05 1217image到byte[] 用到memoryStream类 ... -
.net framework--程序打包--打包.net运行库
2010-10-17 21:05 1690VS03默认是不能把.net运行库打包到自己要发布 ... -
WinForm最简单两GridView同步滚动
2010-09-10 10:28 1673今天在园子里看到一个人问,如何让两个DataGridView保 ... -
直接用aspx页面生成的html文件(不用建立自己的html模板)
2010-09-10 09:29 1414public static string Rend ... -
facebook代理软件
2010-09-09 16:32 203facebook代理软件
相关推荐
这个讲解将深入探讨这些关键特性,包括C# 2.0的简介、泛型、匿名方法、迭代器以及不完全类。 一、C# 2.0简介 C# 2.0是2005年发布的,它是.NET Framework 2.0的一部分。这个版本的目标是提高开发效率,增强类型安全...
在本资源"C#实例讲解源码.rar"中,包含了200多个C#编程的实例,旨在帮助开发者全面了解和掌握C#语言的核心特性和应用。这些实例覆盖了C# 3.0版本的主要功能,提供了丰富的实践操作经验,对于初学者和有一定经验的...
8. **匿名方法与Lambda表达式**:C#支持匿名方法,即没有名称的函数,通常用于简化回调函数。Lambda表达式是匿名方法的更简洁形式,与LINQ查询结合使用尤为常见。 9. **LINQ(Language Integrated Query)**:C#的...
还有匿名方法和lambda表达式,它们为编写简洁的代码提供了便利。此外,C#的泛型允许创建类型安全且可重用的数据结构,如List和Dictionary, TValue>。 在实际开发中,你可能会遇到并发和多线程问题。C#提供了一些...
13. **高级话题**:可能包括反射、委托、事件、属性、索引器、接口、抽象类、匿名方法、Lambda表达式等。 通过这套C#课件,学习者不仅可以获得理论知识,还能通过实例和练习来加深理解。对于教师来说,这些课件可以...
10. **C#语法**:这是一个综合性的文档,可能涵盖上述所有主题,并可能包含其他高级特性,如委托、事件、泛型、匿名方法、Lambda表达式、异步编程等。 通过这些文档的学习,开发者能够全面掌握C#语法,从而能够编写...
在C#中,我们还可以使用匿名方法或者Lambda表达式来直接实例化委托,这使得代码更简洁: ```csharp Action, int> action = (a, b) => a + b; // 使用Lambda表达式创建委托 ``` **事件和委托** 委托在C#中的另一个...
首先,我们来详细讲解匿名方法。匿名方法是一种没有名字的函数,它可以直接在需要的地方定义并立即调用,无需事先声明。这种特性使得代码更加紧凑,减少了冗余。在C#中,匿名方法使用lambda表达式表示,形式如下:`...
5. **泛型**:允许创建类型参数化的类、接口和方法,提高代码的灵活性和复用性。 6. **LINQ(Language Integrated Query)**:内置于语言中的查询表达式,使得数据查询更简洁高效。 7. **异步编程**:通过async和...
本教程将针对初学者,深入浅出地讲解C#的基础语法和核心概念。 一、C#基础 1. 变量与数据类型:C#支持多种数据类型,包括基本类型(如int、float、bool等)、引用类型(如类、接口、数组)以及值类型(如结构)。...
6. **高级特性篇**:涵盖委托、事件、Lambda表达式、Linq(语言集成查询)、匿名方法和异步编程等C#的高级特性。 7. **.NET Framework与Windows应用篇**:介绍如何利用.NET框架开发Windows Forms和WPF应用,以及UI...
它的语法简洁且强大,支持许多高级特性,如泛型、匿名方法、LINQ(Language Integrated Query)等。C#的面向对象特性包括类、对象、封装、继承、多态等。 在面向对象编程(OOP)中,类是对象的蓝图,描述了对象的...
C#2.0 锐利体验系列课程(2):匿名方法、迭代器。官方讲解,清晰直接。收藏多年,分享给大家。C#2.0经典
C#还支持匿名函数和lambda表达式,使得代码更加简洁。 类是C#面向对象编程的基础,它封装了数据和操作这些数据的方法。通过使用class关键字定义类,实例化对象是通过new关键字完成的。继承允许一个类(子类)从另一...
C#还支持匿名函数和lambda表达式,它们在编写简洁高效的代码时非常有用。 C#中的控制流结构包括条件语句(if-else,switch-case)和循环(for,while,foreach)。学习如何使用这些结构来控制程序的执行流程。 ...
12. **委托和匿名方法**:学习如何使用委托和匿名方法编写事件处理程序,以及Lambda表达式的应用。 13. **多线程和并发**:了解如何在C#中创建和管理线程,以及使用Mutex、Semaphore等同步原语防止竞态条件。 14. ...
本篇文章将详细讲解C#中的方法调用及其相关知识点,适合初学者理解掌握。 一、方法定义与声明 在C#中,方法由关键字`void`或返回类型、方法名、参数列表(可选)和方法体组成。例如,一个简单的无参数无返回值的...
- 静态与实例方法:静态方法属于类,而实例方法属于对象,两者调用方式不同。 - 装箱与拆箱:将值类型转换为引用类型(装箱)和反之(拆箱)的过程。 3. **.NET框架** - 应用程序域:应用程序域提供了一个安全和...
在C# 2008版本中,引入了一些新特性,如匿名方法、LINQ(Language Integrated Query)和自动属性等,这些都极大地提高了代码的可读性和编写效率。书中通过生动的插图,将这些复杂的概念以直观的方式展现出来,使读者...
自C# 3.0引入的匿名方法和Lambda表达式简化了委托的使用,可以直接在声明委托实例时定义方法: ```csharp MyDel del = (int value) => Console.WriteLine(value + " - Anonymous"); ``` 7. **事件处理** 在C#...