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

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

 2010-09-30 20:59:48 来源:WEB开发网   
核心提示: 什么都不做的Lambda表达式这个话题说到此,还有盲点,[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况(5),这里先说明一下什么都不做的Lambda表达式的写法,Lambda表达式没有返回值的情况(void的情况),

什么都不做的Lambda表达式

这个话题说到此,还有盲点。这里先说明一下什么都不做的Lambda表达式的写法。

Lambda表达式没有返回值的情况(void的情况),想使其内容为空的情况下(调用后什么也不执行的Lambda表达式选择使用的情况),可以使用内容为空的Lambda语句。

例如,下面这个的Lambda表达式:

(x) => { };

这样用Lambda表达式重构,解决了“引入了null值对象”的问题。一句话,不应该用null表示什么也不做的表达式,而是采用调空Lambda表达式的手法。

简单的说,分别用代码来展示能够使用和不能够使用这个技术的场合。

首先,说说不能够使用该技术的场合。下面的代码,因为什么也不需要处理,所以用null值表示的例子。Sample方法的参数action,仅在值不为null的情况下被调用。

using System;

class Program
{
  private static void Sample(Action<string> action)
  {
    if (action != null) action("Hello!");
  }

  static void Main(string[] args)
  {
    Action<string> action = null;
    Sample(action);

    action = (x) => Console.WriteLine(x);
    Sample(action); // 输出:Hello!
  }
}

List 16 执行时没什么可处理的情况下用null表示的例子

相反,下面的代码,在没什么要执行的情况下,要使用空Lambda表达式表示的情况。没必要判定Sample方法的参数action是否为null。如果需要处理的内容不存在的情况下,仅仅用空的Lambda表达式来执行,什么也不做就返回。

using System;

class Program
{
  private static void Sample(Action<string> action)
  {
    action("Hello!");
  }

  static void Main(string[] args)
  {
    Action<string> action = (x) => { };
    Sample(action);

    action = (x) => Console.WriteLine(x);
    Sample(action); // 输出:Hello!
  }
}

List 17 没什么可处理的情况下用空表达式的例子

这样的“什么也不做的Lambda表达式(或是以前的匿名方法)”,是笔者经常使用的技术。

例如,现在正在写的程序,具有用户的操作用报表的形式回放的功能,通过该功能进行自动测试。这个时候,回放中与输出有关的处理会全部禁用,以提高其运行效率。这些操作的实现,并不需要具有输出功能的方法对条件进行一个一个的判断,只要用“空Lambda表达式(匿名方法)”就行了。因此,源代码仍然能够维持其简洁,成功实现了随时都能够执行的自动测试效率的目的。

上一页  1 2 3 4 5 

Tags:入门 第一章 Lambda

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