基于非零的多维数组

2024-05-11

我正在使用以下命令从电子表格中提取单元格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 互操作编组器可以创建它们。

http://msdn.microsoft.com/en-us/magazine/cc301755.aspx http://msdn.microsoft.com/en-us/magazine/cc301755.aspx

公共语言规范 (CLS) 合规性要求所有 数组从零开始。这允许用 C# 编写的方法创建 数组并将数组的引用传递给另一个中编写的代码 语言,例如 Visual Basic®。此外,由于从零开始的数组 是迄今为止最常见的,微软花了很多时间 优化他们的表现。但是,CLR 确实支持 非从零开始的数组,但不鼓励使用它们。对于那些 不关心性能和跨语言可移植性,我会 稍后将演示如何创建和使用非从零开始的数组 部分。

这是我第一次在现实世界的代码中看到它。

显然,多维数组无论是否从零开始,都具有相同的类型。单维的有不同的类型。这是有道理的,因为如果它们具有相同的类型,那么 JIT 总是必须为一般情况生成缓慢的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于非零的多维数组 的相关文章

随机推荐