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

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

 2010-09-30 20:59:48 来源:WEB开发网   
核心提示: 这里产生error的原因是,三元运算符的第二个、第三个运算数不能写成void类型的表达式(因为这样写,[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况(3),void没法隐式转换成第二个、第三个运算数的类型,所以整个表

这里产生error的原因是,三元运算符的第二个、第三个运算数不能写成void类型的表达式(因为这样写,void没法隐式转换成第二个、第三个运算数的类型,所以整个表达式的类型就无法判断了。

因为存在这样的问题,有void类型的返回值的表达式情况下,三元运算符使用就很困难。其实,void返回值的表达式很难理解,不能写反而是个好事。

除了void型以外,其它类型的表达式,使用三元运算符就没有问题。下面的代码在编译和执行时就没有问题。

 1using System;
 2
 3class Program
 4{
 5  static void Main(string[] args)
 6  {
 7    Func<int, bool> method = (year) =>
 8      year < 1994 ? year % 4 == 0 : year % 4 == 2;
 9
10    Console.WriteLine("冬奥会年份");
11    for (int i = 1988; i < 1999; i++)
12    {
13      Console.WriteLine("{0}年={1}", i, method(i));
14    }
15    // 输出:
16    // 冬奥会年份
17    // 1988年=True
18    // 1989年=False
19    // 1990年=False
20    // 1991年=False
21    // 1992年=True
22    // 1993年=False
23    // 1994年=True
24    // 1995年=False
25    // 1996年=False
26    // 1997年=False
27    // 1998年=True
28  }
29}
30

List14 使用三元运算符的Lambda表达式

代入变量method的Lambda表达式,判断参数的年份是不是冬奥会举行的年份,1994年以后,因为是两年举行一届,所以判断方式也要改变。这种情况下,当然是三元运算符派上用场的时候。总之,这种程度的问题,用表达式形式的Lambda就比较容易写。

上一页  1 2 3 4 5  下一页

Tags:入门 第一章 Lambda

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