知识大全 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#操作消息队列的代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这是一个关于C#操作消息队
利用C#实现标注式消息提示窗口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!近一段时间由于项目需要
使用微软消息队列实现C#进程间通信 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 顾名思义微软消
动态执行C#代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 写这篇笔记的理由是因为上篇g提高
C#动态绑定treeview控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh
C#编程实现动态生成Word文档 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何用C#编程实
c#动态调用WebService 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
C#下实现动态系统托盘图标 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一概述 我这里所指的
C#实现动态调用WindowsDLL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 部分代码来自
关于C#中动态加载AppDomain的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在操作