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


{3
public static class MethodExtend4

{5

public static bool OutLength(this string str)
{6
if(str.Length>10)return true;7
return false;8
}9
}10
}