工作日志20081013(C#3.x相关)
2008-10-16 10:09
190 查看
1.LINQ是C#3中最闪亮的部分,扩展方法、lambda表达式、匿名类型等新的语法基本上都是围绕着为LINQ服务而诞生的。搞清楚这些语法对我们熟悉和掌握LINQ非常有帮助。其中,lambda表达式其实就是匿名的delegate。自己写了一个很小的demo,用来体现普通代理、匿名方法代理以及lambda表达式之间的关系。
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using EagleFish.CommonLib;
6
7 namespace CommonConsoleProject
8 {
9 delegate TResult GenericDelegateFunc<TArg, TResult>(TArg arg);
class Program
{
public static bool SomeMethod(int _arg)
{
return _arg > 0;
}
static void Main(string[] args)
{
GenericDelegateFunc<int, bool> func = new GenericDelegateFunc<int, bool>(SomeMethod);
//the use of Anonymous method, from C#2.0
GenericDelegateFunc<int, bool> funcUseAnonymousMethod = delegate(int arg)
{
return arg > 0;
};
//the use of Anonymous delegate(lambda expression),from C# 3.0
GenericDelegateFunc<int, bool> funcUseAnonymousDele = x => {
Console.WriteLine("Now in the body of a lambda expression");
return x > 0;
};
Console.WriteLine(func(3));
Console.WriteLine(funcUseAnonymousMethod(5));
Console.WriteLine(funcUseAnonymousDele(-6));
Console.Read();
}
}
}
由于C# 3的这些新特性都是对C#编译器的改进,并不涉及对IL的修改,所以有心的同学可以通过ILDasm看到这些代理的实现方式。
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using EagleFish.CommonLib;
6
7 namespace CommonConsoleProject
8 {
9 delegate TResult GenericDelegateFunc<TArg, TResult>(TArg arg);
class Program
{
public static bool SomeMethod(int _arg)
{
return _arg > 0;
}
static void Main(string[] args)
{
GenericDelegateFunc<int, bool> func = new GenericDelegateFunc<int, bool>(SomeMethod);
//the use of Anonymous method, from C#2.0
GenericDelegateFunc<int, bool> funcUseAnonymousMethod = delegate(int arg)
{
return arg > 0;
};
//the use of Anonymous delegate(lambda expression),from C# 3.0
GenericDelegateFunc<int, bool> funcUseAnonymousDele = x => {
Console.WriteLine("Now in the body of a lambda expression");
return x > 0;
};
Console.WriteLine(func(3));
Console.WriteLine(funcUseAnonymousMethod(5));
Console.WriteLine(funcUseAnonymousDele(-6));
Console.Read();
}
}
}
由于C# 3的这些新特性都是对C#编译器的改进,并不涉及对IL的修改,所以有心的同学可以通过ILDasm看到这些代理的实现方式。
相关文章推荐
- .NET通用数据库访问组件,日志组件,C#相关工具
- [工作日志] LDAP相关开发的一些感受
- 【小平工作日志】Mysql 相关sql语句(新建、更新等)持续更新中……
- 一个自定义Collection类的实现(C#) 第一篇工作日志
- 工作日志记录:Android自定义控件中使用的canvas裁剪的相关参数记录:
- 2014-03-31工作日志:如果一个工作区中有多个工程,有编译也有执行,则应经常设置好切换
- c#文件助手类分享(读取文件内容 操作日志文件)
- C#调用dos窗口获取相关信息的方法
- 2015-2-1-工作日志-刘婉
- 工作日志2011.9.2
- TransR/CTransR论文:相关工作
- C#路径的相关操作
- printk的实现以及内核日志的相关知识
- 2014-04-01工作日志:error无法启动此程序,因为计算机中丢失DLL_Md5Check.dll。尝试重新安装该程序以解决此问题
- 工作日志 4.27
- c#应用程序使用log4net组建输出不了日志问题的解决
- 2010-12-27工作日志
- 【工作相关】 工作初段 1
- c#属性的相关学习总结。
- C# 文件操作相关