dynamic是c# 4.0新增的类型,可以修饰类,对象,属性,索引器,方法返回值等。
class ExampleClass { // A dynamic field. static dynamic field; // A dynamic property. dynamic prop { get; set; } // A dynamic return type and a dynamic paramater type. public dynamic exampleMethod(dynamic d) { // A dynamic local variable. dynamic local = "Local variable"; int two = 2; if (d is int) { return local; } else { return two; } } }
dynamic、object、和var的区别
var 的本质是语法糖,在编译时已经确定了类型。
object是万父之本,
而dynamic则可以绕过编译时对类型的检查,在运行时再确定类型。根据其编译后的IL,dynamic会被编译进object中去。
dynamic可以简化COM API(例如 Office Automation API)、动态 API(例如 IronPython 库)和 HTML 文档对象模型 (DOM) 的访问。