主题: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的价钱。起码比书店的便宜十几块钱。
以前一直使用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的价钱。起码比书店的便宜十几块钱。