返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

c# 3.0锐利体验教程

时间:2010-10-29 00:28来源:知行网www.zhixing123.cn 编辑:麦田守望者

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;
}

 

LINQ简介
1.NET Language Integrated Query(LINQ):不采用特定于关系数据库或者XML的专有方案,而采用通用方案来解决各种信息源的访问与整合问题。
2.在LINQ中,查询成为编程语言的一个组成部分,这使得查询表达式可以得到很好的编译时语法检查,丰富的元数据,智能感知等强类型语言的好处。

语法格式:
class Program
{
static void Main(string[] args)
{
string[] names = { "burke", "Connor", "Frank", "Everett", "Albert", "Geroge", "Harris", "David" };
IEnumerable<string> query = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
foreach (string item in query)
{
Console.WriteLine(item);
}
Console.ReadLine();

}
}

以上:
IEnumerable<string> query = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
等同于
IEnumerable<string> query = from s in names
where (s=>s.Length == 5)
orderby (s=>s)
select (s=>s.ToUpper());

等同于如下委托:

Func<string,bool> filter = delegate(string s){
return s.Length == 5;}
Func<string,string> extract = delegate(string s){
return s;}
Func<string,string> project = delegate(string s){
return s.ToUpper();};
IEnumerable<string> query = names.Where(filter)
.OrderBy(extract)
.Select(project);

------分隔线----------------------------
标签(Tag):C# C#实例教程 c#基础教程 C#源码
------分隔线----------------------------
推荐内容
猜你感兴趣