C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进 了一大步。
dynamic是一个类型关键字,声明为dynamic的类型与" 静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特 点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否 不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常 调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 异常。
看一个最简单的示例:
using System;
namespace Xianfen.Net.TestDynamic
{
class Program
{
static void Main()
{
dynamic d = Console.Out;
dynamic a;
a = new Int32();
int b = a;
a++;
a--;
d.WriteLine ("http://www.xianfen.net/");
d.WriteLine(d.GetType());
d.writeln("test"); //抛出 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException异常
}
}
}
对dynamic类型的操作只能有以下几种:
·赋值
·方法调用
·自增
·自减
·接受"静态类型"的构造器创建的对象