中国开发网: 论坛: .NET/C#: 贴子 682692
cndevet: C#3.0新体验
C#3.0新体验

以前一直使用ASP.net 2.0,最近发现大家都开始往3.5转,自己也跟着转。上周去书店买了一本机械工业的《ASP.net 3.5完全自学手册》。看了半个月了,感觉不错。其中发现C# 3.0比以前有很大提升。花了半个小时,总结一下C# 3.0的特点。

一.C# 3.0语言主要增强点

? 隐含类型局部变量

? 扩展方法

? 对象与集合初始化器

? 匿名类型

? Lambda表达式

? 查询表达式( LINQ )

? 表达式树




二.隐含类型局部变量

先来看看例句:

var i = 5;

var h=23.56;

var s = “C Sharp";

var intArr = new[] {1,2,3,4} ;

var a = new[] { 1, 10, 100, 1000 };

"var"这个关键字是不是很眼熟,javascript中经常用到(互相学习现在比较常见了),当然C#中var和javascript的var差别还是比较大。

1.var只能作为局部变量使用;

就是说var只能定义在一个方法里面,或者foreach,for,using等语句里面:

public class VarTest
{
private void test()
{
var i = 0;
}
}

2.var可以申明任何类型变量,可以根据后面的初始化语句自动推断类型;

这个和object有点像,但var是强类型,根据初始化表达式来定义变量的类型;

var i=0; i 是int类型

var str = "test"; str是string类型

3.var定义时,必须使用表达式初始化;

也就是必须定义成 var i=0; 没有初始化编译会报错,而且初始化值不能为null,编译器无法根据null来推断出局部变量的类型;初始值除了int,string等数据类型外,还可以使用new 一个对象作为初始值(从网上大家发表的看法,var使用最多的就是配合一个匿名类型的对象来使用,以及在Linq中使用)




//下面是网上某个网友写得博客,拷贝修改了一下!

配合匿名类型使用:

var a = new{ Name = "maotin" ,Age = 99};
Console.WriteLine(a.Name);
Console.WriteLine(a.Age);
在linq中应用:

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums =
from num in numbers
where num < 5
select num;
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}

4.var使用建议

一般var不要像“var i=9;”这样使用,程序可读性不高;

在匿名类型中使用比较方便;foreach中使用也不错;

var只是语言层面的东西,编译器会在编译的时候通过类型推断把它换成真正的类型


总体来说,C# 3.0比2.0有很大改进。建议准备长期做.net开发的人,可以及早关注一下。另外,推荐一下《ASP.net 3.5完全自学手册》。这本书感觉不错。购买的时候,建议大家参考一下http://www.china-pub.com/209224的价钱。起码比书店的便宜十几块钱。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录