a=(b>0)?b:-b;
当b>0时,a=b;当b不大于0时,a=-b;
这就是[条件表达式]。其实上面的意思就是把b的绝对值赋值给a。
Lamda表达式
对象方法(参数列表=>表达式或语句块)
Lambda表达式可以有多个参数、一个参数,或者没有参数。其参数类型可以隐式或者显式。示例代码如下:
(x, y) =>x * y //多参数,隐式类型=>表达式
x=>x * 5 //单参数, 隐式类型=>表达式
x=>{ return x * 5; } //单参数,隐式类型=>语句块
(int x) =>x * 5 //单参数,显式类型=>表达式
(int x) =>{ return x * 5; } //单参数,显式类型=>语句块
() =>Console.WriteLine() //无参数
上述格式都是Lambda表达式的合法格式,在编写Lambda表达式时,可以忽略参数的类型,因为编译器能够根据上下文直接推断参数的类型,示例代码如下。
(x, y) =>x + y //多参数,隐式类型=>表达式
例子
class MyClass
{
public delegate void DoSomething(int a);
//定义方法委托
private void DoIt(int a) {
Console.WriteLine(a);
}
private void HowtoDo(DoSomething doMethod,int a) {
doMethod(a);
}
public static void Main(string[] args) {
MyClass mc = new MyClass();
//调用定义的方法委托
mc.HowtoDo(new DoSomething(mc.DoIt), 10);
int x = 10;
//使用匿名委托
mc.HowtoDo(delegate(int a){
Console.WriteLine(a + x);
},10);
//使用lamda表达式
mc.HowtoDo(a=>Console.WriteLine(a+x),10);
Console.ReadLine();
}
}