WEB开发网
开发学院软件开发C语言 C#4.0初探:dynamic 关键字 阅读

C#4.0初探:dynamic 关键字

 2009-05-29 08:31:21 来源:WEB开发网   
核心提示: 与关键字var的比较从表面上看,dynamic与var关键字的用法很像,C#4.0初探:dynamic 关键字(2),但实质上有本质区别,var关键字被称为:隐含类型局部变量(Local Variable Type Inference),执行相同操作所需的代码少的多,如调用类Me中的Get

与关键字var的比较

从表面上看,dynamic与var关键字的用法很像,但实质上有本质区别。

var关键字被称为:隐含类型局部变量(Local Variable Type Inference),var只能用作局部变量,不能用于字段、参数等;声明的同时必须初始化;初始化时类型就已经明确了,并且不能再被赋值不能进行隐式类型转换的类型的数据;编译时编译器会对var定义的变量进行类型推断,这时变量的类型已经被确定。

dynamic可用于类型的字段,方法参数,方法返回值,可用于泛型的类型参数等;可以赋值给或被赋值任何类型并且不需显式的强制类型转换,因为这些是运行时执行的,这要得益于dynamic类型的动态特性。

与反射的比较

首先能看到的是,dynamic与反射相比,执行相同操作所需的代码少的多。

如调用类Me中的GetName()方法。

class Me
{
    public string Blog { get; set; }

    public string GetName()
    {
        return "Zhenxing Zhou";
    }
}

用反射调用GetName()方法:

Assembly a = Assembly.GetExecutingAssembly();
object instance = a.CreateInstance("Xianfen.Net.TestDynamic.Me");
Type type = instance.GetType();
MethodInfo mi = type.GetMethod("GetName");
object result = mi.Invoke(instance, null);

同样的dynamic调用:

dynamic myInfo = new Me();
string result = myInfo.GetName();

dynamic类型与反射相比能进行的操作要少的多。

上一页  1 2 3 4 5 6 7  下一页

Tags:初探 dynamic 关键字

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接