C中间类通信方法.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C中间类通信方法

C#中间类通信方法.txt25爱是一盏灯,黑暗中照亮前行的远方;爱是一首诗,冰冷中温暖渴求的心房;爱是夏日的风,是冬日的阳,是春日的雨,是秋日的果。 本文由chunhui_1091贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C 转向 C#的疑惑:C#中类间通信方法初探 C#中没有自由函数也没有自由变量,所有的一切都必须封装封装没有函数在类中。在 C 中,通过全局变量 来进行函数间通信和类间通信是常用的全局常用进行方法,然而这在 C#中却变成不可能任务,这的确让 C 程序员苦恼。C#当然有它充分的理由不支持自由函数和自由变量,因为ldquoldquo 支持当然;自由”就暗 示着冲突、不安全等等影响程序健壮性和可维安全程序冲突护性的因素。当然有很多技术可以解决 C#中的 类间通信问题,本文就介绍其中的几种。 一.问题域涉及的主要 Class 在介绍之前先作一下说明。一般我们可以把类间通信时需我们可以介绍要的各相关数据元素封装成一个结 构,我称之为“通信结称之为封装数据构” ,将其记为 Information struct,它是一个纯粹的 C 结构,即除了 公共的数据成员外,什么都没有。当类间需没有什么成员要交换消息时就可以生成一个“通信结构”实例, 然后在可以消息交换类间传递。另外我把提供信息的类称为 Provider Class(以下简称为 Provider) ,接受信 息的类称为 Master Class(以下简称为 Master) 。当然,两个相互通信的类可以互为 Provider 和 Master。请 注意,后面将出现 Provider object 和 Master object,它们对应于是 Provider 和 Master 的实例。 Master 从 Provider 获取所需信息主要有两种方式:正向获取和反向获取。每主要反向获取一种方式 又有几种不同的实现方式。下面我将一一介绍。下面实现介绍 二.正向获取信息 所谓“正向“获取信息,就是按照通常的直线思考方式来直线通常所谓考虑,Master 需要从 Provider 获取信息,就直接让 Master 访问 Provider 的某个成员。在这种方式下,Master 处于主动地位,因为总是由 它去主动拜访 Provider,而 Provider 相对比较被动。 不出你所料,主要有以下几种方法。 1. Provider 暴露一个成员变量或属性 Master 可以通过访问这个成员变量或属性得到所需数据。这种方访问这种可以法对于得到一些简单的非保 密性信息是比较方便的,通常必威体育官网网址性比较通常这些信息可以被 Provider 自己直接提供,并且不易发生变化, 比如获取某个控件(变化比如获取当然是一个 Provider object)的 size 或 color 等等。此方法的不利之处是, 如果 Provider 所提供的数据是必威体育官网网址性的,那么这个安全性就得不到保证必威体育官网网址性安全性那么。 2. Provider 暴露一个方法 如果所需的信息比较复杂(比如需要通过简单的计算才能比较比如复杂得到) ,或经常处于变化之中,通过 一个方法来提供这样这样变化方法的信息无疑是更好的选择。有两种实现方式: (1)通过返回值 这个我们经常用,在这种情况下,Master 还可以通过参数来和 Provider 进行更多的交流。如: publicInformationGetInformation 参数 ; (2)通过 ref 或 out 参数 如果一个方法的返回值被用于其它目的,如判断方法是否方法是否用于执行成功等,此时可以用 ref 或 out 来将所需的信息从方法中“带出” 。如: public int GetInformation out Informationinfo ; 或许你已经看出来了,正向获取信息的方式的主要问题在主要已经出来于,Master 不知道 Provider 会于何 时准备好所需的数据,也就是说,Master 是在一个合适的时间拜访 Provider 吗?如果时机不恰当,显然就 得不到正确的信息。 为了解决这个问题,我们可以采取反向获取信息的方式。反向我们可以 三.反向获取信息 所谓“反向”获取信息,就是 Provider 在准备好数据后,主动将数据提供给 Master。与正向获取信息的方 式相比较,可以看到,主――客关比较可以获取系发生了变化,现在是 Provider 主动去拜访 Master。这就 很自然地解决了正向获取信息方式的时机可能不成时机获取自然熟的问题。 在实际中,用的最多的就是反向获取信息的方式,普遍的反向获取普遍情况是这样的:在 Master 需要数据 时,创建一个 Provider object,Pro

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档