Var
在C#中引入了一个Var的语法,这个语法下面就解析一下:
1、用var声明变量与直接使用对应的类型声明变量是一样的,无任何区别。编译器会将var替换成相应的数据类型。
//所以在C#中,以下这几种情况万万是不行的
//1、不对变量进行初始化
var n;
//2、变量类型不应的的赋值
var x = "hello";
x = 123;
//使用var作为参数类型
void a(var a)
{
}
2、这个var与javascript的var完全不一样,因为C#是强类型语言,javascript为弱类型语言,所以完全不一样。
3、var只能用作局部变量(方法声明中的变量)。不能用作类的成员变量,不能作为方法的返回值类型。
4、泛型集合可以用var推断,非泛型集合不可以用var。
Object
所有类型的父类,也没什么,主要解决一个疑问
既然object可以存储任意类型的数据,那为什么还要用那些子类类型?
这里主要因为性能问题,因为用Object会发生频繁的拆装箱问题,所以,根据性能问题,也就看得出为什么会有强类型语言的出现了。
dynamic
dynamic是C#4.0出现的,叫做动态类型,这种类型可以避开编译器的检查,只有真正执行的时候才会调用,所以报错很不方便。
object a = 12;
dynamic x = a;
int c = x;
//在动态类型中存在的装箱拆箱问题,这里的x可以隐式转换成c,所以obj类型可以借助动态类型来隐式转换成int类型。但是即便是借助了动态类型,也还是会发生拆箱的操作。注意string不能抓换成int。