|
Dynamic lookup动态类型的支持。
可以呼叫方法,索引、属性,栏位等的操作,C# 会在执行时才进行型别的检查,而非一般在编译时就进行静态检查(static type checking)
- class ExampleClass
- {
- public ExampleClass() { }
- public ExampleClass(int v) { }
- public void exampleMethod1(int i) { }
- public void exampleMethod2(string str) { }
- }
复制代码- static void Main(string[] args)
- {
- ExampleClass ec = new ExampleClass();
- ec.exampleMethod1(10, 4); // 编译时会报错
- dynamic dynamic_ec = new ExampleClass();
- dynamic_ec.exampleMethod1(10, 4); // 编译时不会报错,执行时会报错,因为没有两个参数的方法可用
- dynamic_ec.someMethod("some argument", 7, null); // 编译时不会报错,执行时会报错
- dynamic_ec.nonexistentMethod(); // 编译时不会报错,执行时会报错
- }
复制代码
几种可能用 dynamic 的地方- 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;
- }
- }
- }
复制代码
|
|