首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Range[]而不是get_Range()

Range[]而不是get_Range()
EN

Stack Overflow用户
提问于 2012-12-07 08:56:59
回答 3查看 8.3K关注 0票数 7

range.aspx说要使用Range属性而不是get_Range(对象Cell1,对象Cell2)。

他们都在做同样的事情,得到一个表示单元格或单元格范围的Microsoft.Office.Interop.Excel.Range对象。那么,除了这是一个方法,另一个是属性之外,还有什么不同呢?他们为什么要指出Range[]的使用,原因是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-07 11:06:22

Range()比Range[]快

经过实践,我们注意到了这件事。但这里应该定义一个这样说的理由。

当您想要引用一个绝对范围时,此快捷方式非常方便。但是,它不像Rangeproperty那样灵活,因为它不能像处理字符串或对象引用那样处理变量输入。因此,在一天结束的时候,你仍然会提到漫长的道路。虽然短小提供了可读性。因此,在没有更多资源支出的情况下,最好在第一轮就把它做好。

为什么这么慢?在编撰过程中。

“在运行时Excel总是使用传统的表示法(至少告诉过我),所以在编译代码时,快捷表示法中的所有引用都必须转换为常规的范围形式(至少我已经被告知了)。{ie A150必须转换为Range("A150")表单}。不管告诉我的是什么真相,Visual都必须记住它编译后的代码版本和用来编写代码的符号(即代码模块中的任何内容),因此文件大小的工作簿属性(所使用的内存)就会略有上升。”

正如你所看到的,我的回答更符合VBA。然而,经过一些研究证明,VBA方面并没有做太多的减速。因此,您只需要处理C#方面的问题。@汉斯从C#的角度给出了一个更好的答案。希望将两者结合在一起,您将获得一个很好的执行代码:)

这里有一些关于Excel()中Range[]和Range()性能的发现

票数 6
EN

Stack Overflow用户

发布于 2012-12-07 11:35:02

如果使用C#版本4及更高版本,则可以使用范围索引器。但是您必须在早期版本上使用get_Range()。

请注意,它有一些特殊之处,COM接口的默认属性映射到索引器。但是Range属性不是工作表的默认属性,它只是一个常规属性。问题是,C#不允许声明索引器以外的索引属性。工作在VB.NET中,而不是在C#中,您必须直接调用属性getter方法。根据普遍的需求,C#团队在第4版(VS2010)中取消了这一限制。但是,仅在COM接口上,仍然不能在自己的代码中声明索引属性。

票数 3
EN

Stack Overflow用户

发布于 2012-12-07 09:15:05

我使用了这两种方法,并且都返回了相同的结果。我认为Range[]实际上在内部使用get_Range()。

对于命名约定的问题,我现在只使用Range[]。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13759810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档