Var

在C#中引入了一个Var的语法,这个语法下面就解析一下:

1、用var声明变量与直接使用对应的类型声明变量是一样的,无任何区别。编译器会将var替换成相应的数据类型。

  1. //所以在C#中,以下这几种情况万万是不行的
  2. //1、不对变量进行初始化
  3. var n;
  4. //2、变量类型不应的的赋值
  5. var x = "hello";
  6. x = 123;
  7. //使用var作为参数类型
  8. void a(var a)
  9. {
  10. }

2、这个var与javascript的var完全不一样,因为C#是强类型语言,javascript为弱类型语言,所以完全不一样。

3、var只能用作局部变量(方法声明中的变量)。不能用作类的成员变量,不能作为方法的返回值类型。

4、泛型集合可以用var推断,非泛型集合不可以用var。

Object

所有类型的父类,也没什么,主要解决一个疑问

既然object可以存储任意类型的数据,那为什么还要用那些子类类型?

这里主要因为性能问题,因为用Object会发生频繁的拆装箱问题,所以,根据性能问题,也就看得出为什么会有强类型语言的出现了。

dynamic

dynamic是C#4.0出现的,叫做动态类型,这种类型可以避开编译器的检查,只有真正执行的时候才会调用,所以报错很不方便。

  1. object a = 12;
  2. dynamic x = a;
  3. int c = x;
  4. //在动态类型中存在的装箱拆箱问题,这里的x可以隐式转换成c,所以obj类型可以借助动态类型来隐式转换成int类型。但是即便是借助了动态类型,也还是会发生拆箱的操作。注意string不能抓换成int。