c# - Range[] 而不是 get_Range()

标签 c# excel methods properties

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.get_range.aspx它说使用 Range 属性而不是 get_Range(Object Cell1, Object Cell2)。

它们都在做同样的事情,获取表示一个单元格或单元格区域的 Microsoft.Office.Interop.Excel.Range 对象。那么,除了这是一个方法而另一个是属性之外,有什么区别呢?为什么他们指向使用 Range[],这是什么原因?

最佳答案

Range() 比 Range[] 快

通过实践,我们已经注意到了这种情况。但这里应该定义一个这样说的理由。

当你想引用一个绝对范围时,这个快捷方式很方便。但是,它不如 Range 属性灵活,因为它不能将变量输入处理为字符串或对象引用。所以在一天结束时,您仍然会引用 方式。尽管矮个子提供了可读性。因此,不妨在第一轮就把它做好,而不需要更多的资源支出。

现在为什么这么慢?编译中。

“在运行时 Excel 总是使用常规符号(或者有人告诉我),因此在编译代码时,快捷符号中的所有引用都必须转换为常规范围形式(或者我被告知). {ie [A150] must be converted to Range("A150") form}. 不管我被告知的真相是什么,Visual Basic 必须记住代码的编译版本和你曾经编写的任何符号您的代码(即代码模块中的任何内容)、文件大小(使用的内存)的工作簿属性因此略有增加。”

如您所见,我的回答更符合 VBA。然而,经过一些研究,有点证明 VBA 端不会减慢速度。所以你只需要处理 C# 端。 @Hans 从 C# 的角度给你一个更好的答案。希望将两者结合起来,您将获得性能出色的代码:)

以下是关于 Excel 中 Range[] 与 Range() 性能的一些发现

enter image description here

关于c# - Range[] 而不是 get_Range(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759810/

相关文章:

c# - 您如何在服务之间共享 gRPC 原型(prototype)定义

html - 访问两个特定标题元素之间的所有 li 元素

Excel:合并 FILTER() 函数输出二维数组中的重复值

R 包 - 我应该导入 `methods` 包吗?

iphone - 我必须创建一个新对象还是可以使用方法参数?

c# - Entity Framework Core 2.2 在单元测试时拆除后不重置

c# - 如何使我的 InfiniteLoopingList 类实现 IEnumerable?

c# - 单元测试调用 wcf 服务的方法

php - 无法摆脱后续请求的下载文件对话框

C++初学者编码错误: "Undeclared identifier"?