WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发C语言 [C# 3.0 入门] [第一章 Lambda表达式] 第四节:La... 阅读

[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况

 2010-09-30 20:59:48 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示:成问题的是,虽然为了源代码的简洁性,[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况,很想用Lambda表达式,但是要写的代码却不能全部都用Lambda表达式来写,文件名就是‘normal.log’,true的话就是&

成问题的是,虽然为了源代码的简洁性,很想用Lambda表达式,但是要写的代码却不能全部都用Lambda表达式来写。

那么, Lambda表达式究竟能做到什么程度呢?

习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题。可是很遗憾,情况不是这样。那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有。

例如,C/C++中,下面的代码是可行的。

int a,b,c;

c = (a=1, b=2, a+b); // a=1、b=2、c=a + b
printf("%d\n",c);

正因为仅仅一个表达式就能做相当多的处理,所有逗号表达式才有着重要的意义。

但是,C#却没有这样的用法。

但是C#有三元运算符?:和空接合运算符??。通过使用这些运算符,相当数量的代码都可以用Lambda表达式来写了。

例如,“根据参数指定的文件名向文件中写入字符串,参数为null的情况下,用‘default.txt’作为默认文件名”这样的Lambda表达式,像下面那样,用空接合运算符??就可以用Lambda表达式来写。

using System;

class Program
{
  static void Main(string[] args)
  {
    Action<string> method =
      (filename) => System.IO File.WriteAllText(
                          filename ?? "default.txt", "Hello!");

    method(null); // 生成default.txt
    method("hello.txt"); // 生成hello.txt
  }
}

List11 使用了空接合运算符??的Lambda表达式

或者“参数的flag如果是false的话,文件名就是‘normal.log’,true的话就是‘system.log’”的情况下,使用三元运算符(?:)按照如下的方式以表达式形式的Lambda来写。

1 2 3 4 5  下一页

Tags:入门 第一章 Lambda

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