您的位置:首页 > 编程语言 > C#

工作日志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看到这些代理的实现方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: