C# 匿名方法和拉姆达表达式

Posted on 2014-11-10 11:47  云起  阅读(27)  评论(0)    收藏  举报  来源
匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法。
规则:
1、匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然;匿名方法外部的跳转语句也不能跳转到匿名方法的内部;
2、在匿名方法的内部不能访问不安全的代码。另外,也不能访问在匿名方法外部定义的ref和out参数。
3、可以使用在匿名方法外部定义的其他变量。


拉姆达表达式:就是匿名方法,只是语法不同。
(param)=>expr
param是输入参数列表,expr是一个表达式或者一系列语句。
规则:
1、在一个具有唯一的显示类型参数的Lambda表达式中,圆括号可以从参数列表中删除。
2、当输入参数不唯一时,括号不能省略。
3、输入参数列表中的各参数可以显式指定类型,也可以省略参数类型,具体类型通过类型判断机制判断。
4、expr可以只包含一个计算表达式,也可以包含一系列语句,只是语句需要包含在大括号中。

expr 为语句的时候:
namespace DelegateSample
{
    public delegate void PrintDelegate(string content);
    class Program
    {
        static void Main(string[] args)
        {
            PrintDelegate pd = (string str) =>
                {
                    System.Console.WriteLine("Printing...");
                    System.Console.WriteLine("Content:{0}", str);
                };
            pd("The quick brown fox jumps oyer a lazy dog.");
            
            
        }

        
    }
}

出处:http://blog.sina.com.cn/s/blog_6f670f430100zg11.html


扩展阅读:http://www.codeproject.com/Articles/47887/C-Delegates-Anonymous-Methods-and-Lambda-Expressio

    译文:http://www.cnblogs.com/niyw/archive/2010/10/07/1845232.html

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3