[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况
2010-09-30 20:59:48 来源:WEB开发网这里产生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就比较容易写。
更多精彩
赞助商链接