网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
在COM中使用数组参数-数组指针
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
需求决定使用哪种方法。

2.1     数组指针
数组指针是标准的C/C++中的数组参数传递方式。数组指针实际上就是数组元素序列化存放时的首地址。数组指针的操作非常简单,所以也是效率最高的传递方式。但是,这种方式不能够在VB中使用。数组指针可以传递一维数组,也可以传递多维数组。如果COM的客户端是VC++程序的话,这是最好的传递方式。

数组指针作为跨套间的调用参数时,需要进行marshal。所以,应该编译和注册proxy/stub。

2.2     SafeArray
SafeArray是标准的VB数组存放方式。和数组指针类似,SafeArray可以传递一维数组,也可以传递多维数组。由于SafeArray具有比数组指针更复杂的结构,所以,编程比使用数组指针复杂,程序运行效率也相对较低。

使用SafeArray方式传递的数组,可以从VB程序中调用,也可以从VC++程序中调用。而且,由于SafeArray是Automation的标准数据,所以可以通过缺省的基于TLB的proxy/stub进行跨套间的调用,而不必编译和注册自己的proxy/stub。

2.3     ICollection
ICollection方式是最复杂,也是使用最广泛的。ICollection并不是一个接口的名称,而是指实现了枚举器和索引属性的IDispatch接口。这种数组传递方式的特点是自己实现数组对象,所以有最大的灵活性,可以实现按需生成数组元素等高级功能。

ICollection所传递的数组对象不再是普通的指针或特定的结构,而是一个独立的COM对象。由于传递的是接口,所以参数具有面向对象的多态性特征,就是说数组元素可以是自己实现的,也可以是其他人实现的,只要是实现了有特定属性的IDispatch接口就可以作为参数。另一方面,由于用作数组的COM对象可以单独设计,所以,可以使用更加合理的实现方式,例如使用列表、hash表或平衡树等方式实现。

有的数组实现,只需要访问少数的几个元素,或者元素个数理论上是无穷的,或者每个数组元素的生成需要耗费大量的资源。这时,应该使用ICollection方式实现数组传递。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号