先回顾一下这两个关键词的用法.
var是个语法糖,是在用var声明变量的那一刻就确定了其变量的类型.
因为需要在声明的时候就确定其类型,所以要求在用var声明隐式局部变量的时候必须初始化该变量.
编译器就是通过这种初始化的语法来确定变量的类型的.(同样属于编译时的强类型语法检查)
dynamic 则是一种数据类型,是一种动态的数据的类型,其具体的类型是在运行时,根据其上下文来确
定其具体的数据类型,编译时编译器是会自动忽略该变量的类型检查的.
具体的问题
var db = Database.Open("数据库名字");
dynamic oc_list = db.Query("查询语句");
var oc_coll = db.Query("查询语句");
oc_list 最终的类型为System.Collections.ObjectModel.ReadOnlyCollection
oc_coll的类型是根据Query确定的为 IEnumerable<T>