范围而不是get_Range()

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.get_range.aspx它说使用Range属性,而不是get_Range(对象单元格1,对象单元格2)。

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

Range()比Range []快

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

当您想要引用绝对范围时,此捷径非常方便。 但是,它不像Rangeproperty那样灵活,因为它不能像string或对象引用那样处理variablesinput。 所以,在这一天结束的时候,你仍然会指出漫长的道路。 尽pipe短小提供了可读性。 所以不妨在没有更多资源支出的情况下,把它做好,

现在为什么慢? 在编译。

“在运行期间,Excel总是使用传统的符号(或者我被告知),所以当编译代码时,所有快捷方式符号的引用都必须转换为常规范围的forms(或者我已经被告知)。{即[A150]必须被转换为Range(“A150”)forms}无论我被告知的事实是什么,Visual Basic都必须记住它的编译版本的代码以及你用来编写代码的任何符号即无论在代码模块中),文件大小(所使用的内存)的工作簿属性因此略有增加。“

正如你看到我的答案更符合VBA。 不过经过一番调查研究certificate,VBA方面并没有做太多的放缓。 所以你只需要照顾C#端。 @Hans给你一个更好的C#视angular的答案。 希望结合起来,你会得到一个伟大的执行代码:)

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

在这里输入图像说明

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

请注意,它有一些特殊的东西,COM接口的默认属性映射到索引器。 但是Range属性不是Worksheet的默认属性,它只是一个常规属性。 麻烦的是,C#不允许声明索引器以外的索引属性。 在VB.NET中工作,而不是在C#中,你必须直接调用属性getter方法。 根据大众的需求,C#团队在版本4(VS2010)中放弃了这一限制。 但是只有在COM接口上,你仍然不能在自己的代码中声明索引属性。

我已经使用了两个,都返回了相同的结果。 我认为Range []实际上在内部使用get_Range()。

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