C4.0和VS2010新特性(6)

时间:2025-04-20

介绍VS2010的新特性等一些新功能

看到这里,你就不会认为dynamic和var是“差不多”的概念了(var无非是根据赋值的类型编译器自己判断;且var不能作为函数返回值类型,但是dynamic可以)。 或许有人会疑问:dynamic可以完全替代类似像简单工厂、抽象工厂一类的东西了咯?我的理解是——不对!从上面的定义中可以得知:dynamic必须首先获取对象实例,然后动态反射是它做的事情;如果完全取代反射,实例也获取不到,如何反射呢?真是“巧妇难为无米之炊”啊!

说道dynamic可以作为返回值,下面给出一个例子:

class DynamicClass

{

public int Num1 { get; set; }

public int Num2 { get; set; }

public DynamicClass(int n1, int n2)

{

Num1 = n1;

Num2 = n2;

}

public dynamic DynamicAction

{ get; set; }

}

主函数注意咖啡色部分:

static void Main(string[] args)

{

DynamicClass t = new DynamicClass(1, 2);

t.DynamicAction = new Func<int, int, double>((x, y) => x + y); Console.WriteLine(t.DynamicAction.Invoke(t.Num1,t.Num2)); }

道理很简单:因为dynamic类型可以赋值任何东西(包括匿名委托),所以我创建了一个匿名委托给它。然后调用计算结果(匿名委托的调用使用Invoke,可以省略)。 但是……dynamic不仅仅可以动态反射类方法和属性,还可以“空中楼阁”般动态地去创建一个类方法和属性,并且赋值,相信吗?这是第二话。

(二)神奇的ExpandoObject类和自定义动态类扩展:

C4.0和VS2010新特性(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219