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

[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 ? &quo

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!");

上一页  1 2 3 4 5  下一页

Tags:入门 第一章 Lambda

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