入门

  • C# 语言从诞生起就是强类型语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本条件
    • 变量声明必须指明其类型
    • 变量类型明确后,其类型在Runtime亦不能改变

数据类型

匿名类型(匿名对象)

  1. static void Main(string[] args)
  2. {
  3. new { Name="张三", Age=20, Like="LOL"};
  4. }
  • C#在3.0,也叫匿名对象

Var 让编译器自己根据编译的结果来推断变量类型

  • 让编译器自己根据编译的结果来推断变量类型
  1. #现在有匿名对象和var推断类型的支持
  2. static void Main(string[] args)
  3. {
  4. var x = new { Name = "张三", Age = 20, Like = "LOL" };
  5. var s = new { Name = x.Name, Age = x.Age };
  6. }

dynamic

  • 动态类型

dynamic的作用

  • 1、dynamic 表示动态类型,动态类型的含义就是 程序编写、编译阶段 类型不确定,在Runtime时再通过反射机制确定相关对象的属性或方法。因此编写阶段不会进行语法检测。
  • 2、dynamic 可用来声明 字段、属性、方法参数、方法返回值
  • 3、dynamic 不支持智能提示,因为你写代码时 dynamic 是什么没法知晓(反射)

dynamic声明的变量

  • dynamic 声明的变量,可理解为 object 类型变量。所以给dynamic变量赋任何类型值都正确,但在使用变量来取得某个属性值或调用某方法时(此时程序肯定处于Runtime状态),CLR会检查(反射)所调用的属性或方法是否存在,不存在报运行时异常
  • dynamic在 Asp.net Mvc web开发中处处使用,虽然看上去很复杂,本质就上面所说内容。

对比说明

var dynamic
声明字段 ×
局部变量
方法参数类型 ×
方法返回值类型 ×

参考资料