C#是针对每个调用或常量计算的Microsoft.Office.Interop.Excel.Range.Cell.Count

时间:2012-07-12 17:06:54

标签: c# excel excel-2003

我有一些代码,我通过检查属性Excel.Range.Cells.Count来检查我的Excel.Range中是否有任何单元格。从我的分析来看,这似乎是一个瓶颈(请注意,该方法被称为很多次)。有没有人知道Count属性是如何实现的,它是通过迭代每次调用的所有单元格来计算的,还是一个常量?

我在Microsoft的文档,StackOverflow或Google上找不到任何相关内容。任何帮助表示赞赏。

非常感谢。

1 个答案:

答案 0 :(得分:0)

由于Excel.Range.Cells返回Range对象本身,因此使用Range的属性。它的文档说它返回集合中的对象数。 [MSDN] [1]

这表明范围就像一个动态数组,因此它的Count属性不能是常量(在C风格常量的意义上)。因此,我们可以推断出每次调用都会计算属性,至少通过读取内部存储的值,该值仅在集合更改时更新。

[1] http://msdn.microsoft.com/en-us/library/aa214230(v=office.11).aspx