range.aspx说要使用Range属性而不是get_Range(对象Cell1,对象Cell2)。
他们都在做同样的事情,得到一个表示单元格或单元格范围的Microsoft.Office.Interop.Excel.Range对象。那么,除了这是一个方法,另一个是属性之外,还有什么不同呢?他们为什么要指出Range[]的使用,原因是什么?
发布于 2012-12-07 11:06:22
Range()比Range[]快
经过实践,我们注意到了这件事。但这里应该定义一个这样说的理由。
当您想要引用一个绝对范围时,此快捷方式非常方便。但是,它不像Rangeproperty那样灵活,因为它不能像处理字符串或对象引用那样处理变量输入。因此,在一天结束的时候,你仍然会提到漫长的道路。虽然短小提供了可读性。因此,在没有更多资源支出的情况下,最好在第一轮就把它做好。
为什么这么慢?在编撰过程中。
“在运行时Excel总是使用传统的表示法(至少告诉过我),所以在编译代码时,快捷表示法中的所有引用都必须转换为常规的范围形式(至少我已经被告知了)。{ie A150必须转换为Range("A150")表单}。不管告诉我的是什么真相,Visual都必须记住它编译后的代码版本和用来编写代码的符号(即代码模块中的任何内容),因此文件大小的工作簿属性(所使用的内存)就会略有上升。”
正如你所看到的,我的回答更符合VBA。然而,经过一些研究证明,VBA方面并没有做太多的减速。因此,您只需要处理C#方面的问题。@汉斯从C#的角度给出了一个更好的答案。希望将两者结合在一起,您将获得一个很好的执行代码:)
这里有一些关于Excel()中Range[]和Range()性能的发现

发布于 2012-12-07 11:35:02
如果使用C#版本4及更高版本,则可以使用范围索引器。但是您必须在早期版本上使用get_Range()。
请注意,它有一些特殊之处,COM接口的默认属性映射到索引器。但是Range属性不是工作表的默认属性,它只是一个常规属性。问题是,C#不允许声明索引器以外的索引属性。工作在VB.NET中,而不是在C#中,您必须直接调用属性getter方法。根据普遍的需求,C#团队在第4版(VS2010)中取消了这一限制。但是,仅在COM接口上,仍然不能在自己的代码中声明索引属性。
发布于 2012-12-07 09:15:05
我使用了这两种方法,并且都返回了相同的结果。我认为Range[]实际上在内部使用get_Range()。
对于命名约定的问题,我现在只使用Range[]。
https://stackoverflow.com/questions/13759810
复制相似问题