c# 3.0锐利体验(一)

c# 3.0新特性
a) 隐含类型局部变量
b) 扩展方法
c) 对象与集合初始化器uju自动出示
d) 匿名类型
e) Lambda表达式
f) 查询表达式(LINQ)
g) 表达式树

a) 隐含类型局部变量
var i=5;
var h=23.45;
var s="C Sharp";
var intArr=new[]{1,2,3,4};
var a=new[]{1,10,100,1000};
1.var 为关键字,可理解为占位符,可以根据后面的初始化推断类型
2.初始化语句必须为表达式,且编译时可推断类型
3.var声明的仅限局部变量,亦可用于foreach,using等语句
4.数组也可以作为隐含类型。

Lambda表达式格式:
(参数列表)=>表达式或者语句块

可以有多个参数,一个参数,或者无参数。
(x,y)=>x*y //多参数,隐式类型=>表达式
        x     =>x*10 //单参数,隐式类型=>表达式
       x      =>{return *10} //单参数,隐式类型=>语句块
(int x)=>x*10 //单参数,显示类型=>表达式
(int x)=>{return x*10} //单参数,显式类型=>语句块
  ()          =>Console.WriteLine() //无参数
 
Lambda表达式L可以被转换为委托类型D,需要满足以下条件:
L和D拥有相同的参数个数;
L的参数类型要与D的参数类型相同。注意隐式类型要参与类型辨析;
D的返回类型与L相同,无论L是表达式,还是语句块。

delegate int myDelegate(int n);
public class myClass
{
      
public static void Process(myDelegate md);
}

myClass.Pross(x
=>x*10);
以上代码编译器如何编译?
myDelegate md 
= new myDelegate(XXX);
myClass.Process(md);
public static int XXX(int n)
{
      
return x*10;
}

原文地址:https://www.cnblogs.com/jinweida/p/1209512.html