知识大全 C#动态特性的更多消息

Posted 类型

篇首语:虚心使人进步,骄傲使人落后,我们应当永远记住这个真理。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#动态特性的更多消息相关的知识,希望对你有一定的参考价值。

C#动态特性的更多消息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Mads Tersen给大家展示了C#中dynamic关键字的更多详细信息 以及它的一些具体用法 并谈及在选用dynamic关键字之前 一些最终被废弃的替代设计方案    C# 将通过新的元类型 dynamic 来添加对后期绑定的支持 任何直接声明为这种类型的变量 或者从函数中返回这种类型的值 都将自动地视为后期绑定 这类似于在Visual Basic中把变量声明为 object 不过它现在可以支持任何类型系统了 不仅仅是CTS(通用类型规范)和    一个重要之处是 这个特性的目标就是为了支持后期绑定 以及更多地为了支持近来流行的动态绑定 动态类型明显不是C#的一个特性【译者注 意指C#是静态语言 本来无需动态类型的】 不过是为了支持动态绑定的一个后果    还要着重注意的一点是 反射并不是一种很好的替代方案 使用反射的问题在于 需要处理各种各样的类型 使用Reflection命名空间调用方法的方式和在ScriptObject上调用方法的方式并不相同 尤其 Ruby/Python方法这样的第三方方法    一种选择是用波形号作为动态操作的前缀 可惜 这种方式马上也变得难以使用 尤其在你开始研究类型转换 数组索引和数学操作符的地方

 object d = GetDynamicObject(); string result = ~(string) d ~[ d~ Length ~ ];

  下一个曾考虑过的选择是动态上下文 类似unsafe和unchecked上下文那样 你能够标注任意的代码块为 dynamic 这种方式的问题在于 它很难把静态和动态代码混合在一起 这种方式书写的代码类似下面

 dynamic  //some dynamic code static  //some statically bound code dynamic  //some dynamic code in some static code  //some more statically bound code  //some more dynamic code 

  第三种方案是传播性的表达式 由于表达式的动态本质将产生向上传播的问题

 object d = GetDynamicObject(); string result = (string) d[ dynamic(d) Length ];

  当然 它们选择的语法也不够完美 虽然可以让大家轻易地读懂代码 但是没有任何东西来表明一个动态调用是在实际Call Site当中被创建出来的 唯一看到的信息是这个变量在哪里声明的

 dynamic d = GetDynamicObject(); string result = (string) d[d Length ];

  选用这种设计的关键原因是 代码未必真的不够安全 进行动态调用本身就像之前抛出异常那样 不过现在你不用编写所有臃肿 易出错的反射逻辑了    另外一个曾考虑过的选择是用dynamic修饰符来代替元类型 使用这种模式的代码如下所示 开发人员能够早期绑定到Foo的方法上 而不是在任何东西上进行后期绑定 虽然这样可以在一些边界情况下提高性能 不过它却增加了总体的复杂等级 这样的复杂度是难以接受的

 dynamic Foo d = GetDynamicFooObject();

  每逢动态组件进入到表达式中 整个表达式将可能成为动态的 这包括

  方法调用   程序调用   成员访问   操作符运用   索引访问

cha138/Article/program/net/201311/15534

相关参考

知识大全 C#操作消息队列的代码

C#操作消息队列的代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这是一个关于C#操作消息队

知识大全 利用C#实现标注式消息提示窗口

利用C#实现标注式消息提示窗口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!近一段时间由于项目需要

知识大全 使用微软消息队列实现C#进程间通信

使用微软消息队列实现C#进程间通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  顾名思义微软消

知识大全 动态执行C#代码

动态执行C#代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  写这篇笔记的理由是因为上篇g提高

知识大全 C#动态绑定treeview控件

C#动态绑定treeview控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh

知识大全 C#编程实现动态生成Word文档

C#编程实现动态生成Word文档  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何用C#编程实

知识大全 c#动态调用Web Service

c#动态调用WebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 C#下实现动态系统托盘图标

C#下实现动态系统托盘图标  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一概述  我这里所指的

知识大全 C#实现动态调用Windows DLL

C#实现动态调用WindowsDLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  部分代码来自

知识大全 关于C#中动态加载AppDomain的问题

关于C#中动态加载AppDomain的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在操作