下面我们来看一看我们在脚本中常用的变量的声明的"var"关键字,美其名曰隐式声明变量,所申明变量的类型由第一个对其赋值(初始化)所决定的。依我的个人观点,这将降低代码的可读性,但是有人说这个关键字主要是针对LinQ而设计得,因为LinQ所涉及的类型可能相当的复杂或在申明变量时还不知道其类型。根据前人的经验总结这个关键字只是为了忽悠我们,在编译下还是强类型的,在IL中并没有出现新的东西。值得注意的是用var声明的变量一定要初始化,如果对于几何类型的初始化时还必须指名其类型。下面我们来看看例子:
2var nums=new []{1,2,3,4,5};//nums int[]
3var str='';//str string
4var list=new List<int>();//int 要指出
5foreach(var i in nums){
6 num+=i;
7}
还有一个很神奇得新东西名字叫:扩展方法。相信大家都已经听说过或已经用过这个新特性,这个也是我所喜欢的新特性之一,我们可以将我们自己扩展的方法弄到如string类型中,而且在VS编写代码时能够智能提示。在ScottGu的文章里我们知道,对于扩展的方法必须在静态类里来扩展。例如我们要写一个验证一个字符串长度的方法,我们可以这样写:
2{
3 public static class MethodExtend
4 {
5 public static bool OutLength(this string str){
6 if(str.Length>10)return true;
7 return false;
8 }
9 }
10}
接下来我们看看对象初始化等的简化,大家就不要在抱怨写实体类了,在.NET 3.0中简化了不少,咱们一起看看吧。
public Name{get;set;}
public NickName{get;set;}
}
var person=new Person{Name="xiaobing",NickName="网魂小兵"};
var persons==new List<Person>{
new Person{Name="xiaobing",NickName="网魂小兵"},
new Person{Name="xiaobing1",NickName="网魂小兵1"}
};
关于Lambda表达式的文章网上流传很多,一搜一大堆,主要他和LinQ有比较好的结合。在LinQ中经常都会用到这种表达式,其实Lambda表达式也就是代理的升级版,引用一下别人的例子我们来看一下在各个版本中使用代理的不同代码:
假设你需要创建一个按钮,当点击它的时候更新ListBox里的内容。在C#1.0和1.1里,你要这样做:
2{
3 listBox = new ListBox();
4 textBox = new TextBox();
5 addButton = new Button();
6 addButton.Click += new EventHandler(AddClick);
7}
8void AddClick(object sender, EventArgs e)
9{
10 listBox.Items.Add(textBox.Text);
11}
而在2.0中可以这样,代码如下:
2{
3 listBox = new ListBox();
4 textBox = new TextBox();
5 addButton = new Button();
6 addButton.Click += delegate
7 {
8 listBox.Items.Add(textBox.Text);
9};
2{
3
4 addButton.Click=>listBox.Items.Add(textBox.Text);
5}
由于Lambda一两句话一说不出它的精妙所在,在LinQ中会大量应用到这个表达式,大家以后慢慢体会吧!到目前为止我想最值得期待的肯定是LinQ了,他也是.NET 3.0中的一个新东东,它将关系型查询语句引入面向对象的世界, 大大增强了语法安全性。而且也对那些SQL感冒的开发人员来说也是一次新的革命啊,我的一个同事就是这样的想法:)关于LinQ这方面的文章也是很多,语法表达能力很强大,对where , select , group , orderby , into 的语法都有支持,而且我也没有很好的学习这个东东,只是大体上的了解,也没有真正用过它,听说有一个论坛要用这个来开发,不知道效果怎么样?这里就对LinQ作个简单的介绍。
以上是迄今为止所能够了解到的新特性,不知道.NET 3.5是个什么概念,微软的步伐还真快,我追啊追啊还是追不上。听说很多程序还在用1.1,现在还有很多公司在开发1.1的程序,不知道是怎么个想法,不过我已经忘却1.1,胸怀2.0,将要奔向3.0,未来的理想是3.5。本人水平有限,参考了一些资料,写得不好请大家见谅,如果觉得我盗版可以给我留言:)