我绝对是在寻找这个,但我找不到答案,即使它看起来很琐碎。
我在ASP.NET中有一个返回字符串的变量。
string[] arrayOfThings { get { return new string[] { ... } } }
我在ASP中调用了它
Dim someString
For Each someString In someClass.arrayOfThings
# Do Something with someString
Next
这不起作用。它返回'Type Mismatch'异常。
当我尝试调试时,IsArray(someClass.arrayOfThings)返回True,但它没有Count,没有属性,没有。 UBound(someClass.arrayOfThings)为0,这是我所期望的,因为它只有1个元素。但是,我无法通过someClass.arrayOfThings(0)
引用该元素我是ASP的新手,但我无法弄清楚我做错了什么。我希望ASP是强类型的。
编辑:我尝试创建一个具有相同值的数组,并将其与我从arrayOfThings获得的数据进行比较,并且在调试器窗口中它们看起来相同,但在一种情况下我可以循环通过它而在另一种情况下,我不能
仅供参考,目前我的工作方式如下:
我在ASP.NET中有一个返回字符串的变量。
string arrayOfThings { get { return String.Join(",", new string[] { ... }) } }
然后在ASP中
Dim someString
For Each someString In Split(someClass.arrayOfThings, ",")
# Do Something with someString
Next
这很有效。
答案 0 :(得分:1)
请改用此方法: -
object[] arrayOfThings { get { return new object[] { ... } } }
使用字符串数组的问题在于它在COM中作为BSTR的SAFEARRAY进行编组说话。但是VBScript只能应付VARIANT的SAFEARRAY。使用对象应该产生一个Variant数组。