技术开发 频道

[C#3.0]新特性概览

[IT168 技术文档]自从看了ScottGu的几篇文章后就有想让C#3.0的一些新特性在我的博客上也留下历史地一页。但是由于环境不允许好久都没有用上.NET 3.0,今天终于忍不住地要动一动键盘满足一下自己的欲望,因为我自己的电脑上安装了.NET 3.0 Framework SDK。在这里我总结一下前辈们的研究成果,也为进一步巩固自己的知识以便今后的开发,同时也希望能够给大家带来一点回忆。

   下面我们来看一看我们在脚本中常用的变量的声明的"var"关键字,美其名曰隐式声明变量,所申明变量的类型由第一个对其赋值(初始化)所决定的。依我的个人观点,这将降低代码的可读性,但是有人说这个关键字主要是针对LinQ而设计得,因为LinQ所涉及的类型可能相当的复杂或在申明变量时还不知道其类型。根据前人的经验总结这个关键字只是为了忽悠我们,在编译下还是强类型的,在IL中并没有出现新的东西。值得注意的是用var声明的变量一定要初始化,如果对于几何类型的初始化时还必须指名其类型。下面我们来看看例子:
var num=0;//num int var nums=new []{1,2,3,4,5};//nums int[] var str='';//str string var list=new List<int>();//int 要指出 foreach(var i in nums){ num+=i; }
还有一个很神奇得新东西名字叫:扩展方法。相信大家都已经听说过或已经用过这个新特性,这个也是我所喜欢的新特性之一,我们可以将我们自己扩展的方法弄到如string类型中,而且在VS编写代码时能够智能提示。在ScottGu的文章里我们知道,对于扩展的方法必须在静态类里来扩展。例如我们要写一个验证一个字符串长度的方法,我们可以这样写: 
 1namespace NExplus.CSharp3Feature
 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}
  如果你想调用这个函数可以在你所有调用的类中引入所在的命名空间(using NExplus.CSharp3Feature;)然后就可以在自己的方法中调用这个方法:string.OutLength(yourstring);是不是很神奇。大家都知道Object是所有类的始祖,如果扩展Object的方法会怎么样呢?在所有类中都能调用你所扩展的方法,在这里就不在赘述,不信你可以试一下,呵呵。
0
相关文章