我使用以下代码获取 MS Word 2007 文档 (.docx) 中使用的标题字符串数组:
dynamic arr = Document.GetCrossReferenceItems(WdReferenceType.wdRefTypeHeading);
使用调试器,我看到arr
动态分配一个 String 数组,其中包含文档中所有标题的标题(大约 40 个条目)。到目前为止,一切都很好。
然后,我想访问字符串,但无论我怎么做,都会出现以下异常:
InvalidCastException:
Unable to cast object of type 'System.String[*]' to type 'System.String[]'.
我尝试了不同的访问字符串的方法:
按索引:
String arr_elem = arr[1];
通过转换为 IEnumerable:
IEnumerable list = (IEnumerable)arr;
通过使用简单的 foreach 循环:
foreach (String str in arr)
{
Console.WriteLine(str);
}
然而,无论我尝试什么,我总是会遇到如上所示的相同异常。
谁能解释我在这里缺少什么/我做错了什么?尤其是String[*]
- 这是什么意思?
string[]
是一个向量 - 从 0 开始的一维数组。string[*]
然而,是一个常规数组只是碰巧只有一维。基本上,你必须将其处理为Array
,然后将数据复制出来,或者使用Array
API 而不是string[]
API.
这与之间的区别相同typeof(string).MakeArrayType()
(向量)和typeof(string).MakeArrayType(1)
(一维非向量)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)