Ter*_*ary 7 c# com excel interop multidimensional-array
我正在使用Interopt.ExcelAPI 从电子表格中提取单元格.我打电话的时候:
object[,] rangeValues = (object[,])range.get_Value(XlRangeValueDataType.xlRangeValueDefault);
并设置断点并检查rangeValues,我看到元素从[1,1]"foo",[1,2]"bar"等开始.
但是,如果我这样做 string[,] test = new string[2, 2] { { "one", "two" }, { "three", "four" } };
元素从[0,0]开始.Excel API如何使用空元素构造多维数组?我尝试添加null但你仍然有一个[0,0]条目.他们的目标没有显示出来.
CLR支持基于非零的数组.它们令人困惑,无法避免.我相信,COM interop marshaller可以创建它们.
http://msdn.microsoft.com/en-us/magazine/cc301755.aspx
公共语言规范(CLS)合规性要求所有阵列都是从零开始的.这允许用C#编写的方法创建一个数组,并将数组的引用传递给用另一种语言(如VisualBasic®)编写的代码.此外,由于基于零的阵列是迄今为止最常见的,因此Microsoft花费了大量时间来优化其性能.但是,CLR确实支持非零数组,但不鼓励使用它们.对于那些不关心性能和跨语言可移植性的人,我将在本节后面演示如何创建和使用非零数组.
这是我第一次在真实世界的代码中看过一个.
显然,多维数组具有相同的类型,无论它们是否为零.单维的有不同的类型.有道理,因为如果它们具有相同的类型,JIT总是必须为一般情况生成慢速代码.

| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |