本文共 1049 字,大约阅读时间需要 3 分钟。
dynamic 关键字来定义我们的动态类型
动态类型是运行时才知道它的具体类型 dynamic是类型,但是编译时不属于CLR类型(指的int,string,bool,double等类型,运行时肯定CLR类型中一种的),它是包含了System.Dynamic.DynamicAttribute特性的System.Object类型,但与object又不一样,不一样主要体现在动态类型不会在编译时时执行显式转换using System;using static System.Console;namespace Dynamic1{ class Program { static void Main(string[] args) { object obj = 10; WriteLine(obj.GetType()); //使用object类型此时需要强制类型转换,不能编译器会出现编译错误 obj = (int)obj + 10; dynamic a = 400; WriteLine(a.GetType()); // 对于动态类型而言,编译时编译器根本不知道它是什么类型, // 所以编译器就判断不了a的类型了,所以下面的代码不会出现编译时错误 // 因为a有可能是int类型,编译器不知道该变量的具体类型不能凭空推测类型 // 当然也就不能提示我们编译时错误了 a += 100; WriteLine(Add(a,a)); ReadKey(); } static dynamic Add(dynamic a,dynamic b) { return a + b; } static Tresult AddS(T1 left,T2 right,Func AddMethod ) { return AddMethod(left, right); } }}
转载地址:http://purxo.baihongyu.com/