入门
- C# 语言从诞生起就是
强类型
语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本条件
- 变量声明必须指明其类型
- 变量类型明确后,其类型在Runtime亦不能改变
数据类型
匿名类型(匿名对象)
static void Main(string[] args)
{
new { Name="张三", Age=20, Like="LOL"};
}
Var 让编译器自己根据编译的结果来推断变量类型
#现在有匿名对象和var推断类型的支持
static void Main(string[] args)
{
var x = new { Name = "张三", Age = 20, Like = "LOL" };
var s = new { Name = x.Name, Age = x.Age };
}
dynamic
dynamic的作用
- 1、dynamic 表示动态类型,动态类型的含义就是
程序编写、编译阶段 类型不确定
,在Runtime时再通过反射机制确定相关对象的属性或方法。因此编写阶段不会进行语法检测。 - 2、dynamic 可用来声明
字段、属性、方法参数、方法返回值
- 3、dynamic
不支持智能提示
,因为你写代码时 dynamic 是什么没法知晓(反射)
dynamic声明的变量
- dynamic 声明的变量,可理解为
object 类型变量
。所以给dynamic变量赋任何类型值
都正确,但在使用变量
来取得某个属性值或调用某方法时(此时程序肯定处于Runtime状态),CLR会检查
(反射)所调用的属性或方法是否存在,不存在报运行时异常
。 - dynamic在
Asp.net Mvc web
开发中处处使用,虽然看上去很复杂,本质就上面所说内容。
对比说明
|
var |
dynamic |
声明字段 |
× |
√ |
局部变量 |
√ |
√ |
方法参数类型 |
× |
√ |
方法返回值类型 |
× |
√ |
参考资料