WEB开发网
开发学院软件开发C语言 [C# 3.0 入门] [第一章 Lambda表达式] 第五节:La... 阅读

[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体

 2010-09-30 20:59:45 来源:WEB开发网   
核心提示: 【短评】“=>”是不等号?BASIC系的语言中,不等号的写法,[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体(3),“=”与“>&rdq

【短评】“=>”是不等号?

BASIC系的语言中,不等号的写法,“=”与“>”的顺序没有明确的规定。这样的语言中,“>=”“=>”是等价的。正因为如此,熟悉了这样的语言的话“=>运算符”就很容易会被误认为是不等号。

例如如果有下面的Lambda表达式,如果是有上述语言的使用经验的人看来,很容易就认为是不等号了。

x => 0

但是,使用Visual Basic的IDE的程序员,几乎就不会看见作为不等号的“=>”。因为在IDE中输入“=>”时,当场就会被自动替换为“>=”(Visual Basic 6.0与Visual Studio 2008会要求确认)

所以综合起来考虑,如果是使用会把“=>”与不等号搞混的编程语言,那最好就要养成良好的编程习惯。

Lambda表达式的各种变体

Lambda表达式有各种变体。特别是在参数只有一个的情况下,因为在语法上可以省略参数两边的括弧,全面把握起来会比较困难。所以,下面的代码给出几种主流的变体的写法。

 1using System;
 2
 3delegate int NoArg();
 4delegate int OneArg(int onlyOne);
 5delegate int TowArgs(int first, int second);
 6delegate void NoRetVal();
 7
 8class Program
 9{
10  static void Main(string[] args)
11  {
12   NoArg    sample1 = () => 0;
13   OneArg   sample2 = (x) => x * 2;
14   OneArg   sample3 = (int x) => x * 2;
15   OneArg   sample4 = x => x * 2;
16   TowArgs  sample5 = (x, y) => x * y;
17   TowArgs  sample6 = (int x, int y) => x * y;
18   OneArg   sample7 = (x) => { return x * 2; };
19   OneArg   sample8 = (int x) => { return x * 2; };
20   NoRetVal sample9 = () => Console.WriteLine("Hello!");
21  }
22}
23

List20 Lambda表达式的各种变体

sample1 = () => 0

在写没有参数的Lambda表达式的时候,要写上没有参数的空的括号。

sample2 = (x) => x * 2

有参数的情况下,用括号把参数表括上是最基本的写法。

sample3 = (int x) => x * 2

当然,如果能够明确指定参数的类型更好。

sample4 = x => x * 2

仅当参数只有一个的时候,参数两边的括弧可以省略。

sample5 = (x, y) => x * y

参数有多个的时候,用逗号分隔

sample6 = (int x, int y) => x * y

参数有多个的时候,也可以指定类型

sample7 = (x) => { return x * 2; }

Lambda语句的例子

sample8 = (int x) => { return x * 2; }

Lambda语中也可以指定类型

sample9 = () => Console.WriteLine("Hello!")

没有返回值的情况,写成调用void型返回值的方法的形式。

下期预告

介绍到这里,Lambda表达式的大部分内容已经介绍过了。仅仅运用本章的知识,就能够使代码发生很大的质的变化了。

然而,如果说要完全理解了Lambda表达式的话,仅仅这样的话还为时尚早。

实际上,推断被省略了的类型声明的“类型推断”的麻烦事还在后头呢。下一章,就来说说类型推断。同时,也将会讨论一下使用Lambda表达式的代理类型在类库中的使用方法。例如,本章中的例子里就用到了Action类型和Func类型。

上一页  1 2 3 

Tags:入门 第一章 Lambda

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接