[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况
2010-09-30 20:59:48 来源:WEB开发网using System;
class Program
{
static void Main(string[] args)
{
Action<bool> method =
(system) => System.IO.File.AppendAllText(
system ? "system.log" : "normal.log", "log message\r\n");
method(false); // 生成normal.log
method(true); // 生成system.log
}
}
List12 使用三元运算符(?:)的Lambda表达式
但是,前一章的List10的例子里,其中的if语句中就不能改用三元运算符来替换。如果试图替换的话就是以下情况:
using System;
class Program
{
static void Main(string[] args)
{
Action<string> method = (filename) =>
filename == null
? Console.WriteLine("Hello!")
: System.IO.File.WriteAllText(filename, "Hello!");
method(null);
method("hello.txt");
}
}
List13 List10中用三元运算符改写后(产生编译错误)
这个代码,会产生以下的编译错误:
error CS0201: 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句。
error CS0173: 无法确定条件表达式的类型,因为“void”和“void”之间没有隐式转换。
这并不是说Lambda表达式不能调用具有void返回值的方法。下面的代码就没有问题。
Action<string> method =
(filename) => System.IO.File.WriteAllText(filename, "Hello!");
更多精彩
赞助商链接