C#中的Lambda表达式


在看C#中的Lambda表达式之前,先来看一个概念:匿名方法。学过Java的亲们,可能对这个概念比较了解。Java JDK8中也引入了Lambda表达式。
 
下面看看C#中的匿名函数。下面是一个实例:

namespace ConsoleApplication
{
    class AnonymousMethod
    {

        public static void Main()
        {
            String name = "周杰伦";
            /*
            * Func<String, String>委托接受一个字符串参数,返回一个字符串。sayHello是这种委托类型的变量。
            * 可以看到,这里不是把方法名赋予这个变量,而是使用一段简单的代码:
            * 它前面是关键字delegate,后面是一个字符串参数,然后是方法的实现,最后以分号结束。
            */
            Func<String, String> sayHello = delegate(String param)
            {
                String greeting = "你好," + param + "!我们喜欢你的歌!";
                return greeting;
            };
            Console.WriteLine(sayHello(name));
        }
    }
}

运行结果如下:

C#中的Lambda表达式

从C#3.0开始,可以使用Lambda表达式替代匿名方法。

下面我们看看上面的例子,改写成Lambda表达式版本的是什么模样:

namespace ConsoleApplication
{
    class LambdaExpression
    {
        public static void Main()
        {
            String name = "周杰伦";
            /*
            * Func<String, String>委托接受一个字符串参数,返回一个字符串。sayHello是这种委托类型的变量。
            * Lambda运算符“=>”的左边列出了需要的参数。
            * Lambda运算符的右边定义了赋予Lambda变量的方法的实现代码。
            * 怎么样?是不是很简单!
            */
            Func<String, String> sayHello = param =>
            {
                String greeting = "你好," + param + "!我们喜欢你的歌!";
                return greeting;
            };
            Console.WriteLine(sayHello(name));
        }
    }
}

  • 1
  • 2
  • 下一页

相关内容