我要读某个method的返回值。
我先用VB写了以下语句:
Dim data As Variant
data = col.GetData(ARRAY1D_NUMERIC)
For ii = 1 To UBound(data)
Cells(ii, 2) = data(ii)
Next
读取data,输出正确,没问题。(data读到的是一个一维数组) 然后我用C#:
object[] data = col.GetData(ARRAY1D_NUMERIC, Default, Default) as object[]; 但是data始终是null。 请问这是为什么?object和variant有些什么差别,为什么variant能做到的object做不到?请大家帮忙回答一下,谢谢!
我先用VB写了以下语句:
Dim data As Variant
data = col.GetData(ARRAY1D_NUMERIC)
For ii = 1 To UBound(data)
Cells(ii, 2) = data(ii)
Next
读取data,输出正确,没问题。(data读到的是一个一维数组) 然后我用C#:
object[] data = col.GetData(ARRAY1D_NUMERIC, Default, Default) as object[]; 但是data始终是null。 请问这是为什么?object和variant有些什么差别,为什么variant能做到的object做不到?请大家帮忙回答一下,谢谢!
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
如果GetData()返回的不是一个数组,而是一个对象,那么你把它转换成object[]数组,有可能会抛出异常
你所调用的GetData()方法最好的返回一个object[]数组,或者是其他基本数据类型或对象的数组,确保返回的对象不是一个空对象
由于,并不知道你的具体代码是怎样实现的,我也帮你这么一点,相信你一定会解决的,呵呵~
vb 的方式是使用自动化的
col.GetData(ARRAY1D_NUMERIC) 其实不是返回一个数组而是一个hresult,vb 里的返回值应该是他的最后一个参数
c# 里可能需要object[] data
col.GetData(ARRAY1D_NUMERIC, Default, out (object)data)
我跟踪了它返回的类型,是system.single[*]。object不是可以包含所有类型吗?是不是可以包含single[]呢?还是它产生的是float[]我就要设置成float[],产生string[]我就要设string[]?
另外,我用object[,] data = col.GetData(ARRAY2D_NUMERIC, Default, Default) as object[,]; 后就能正常实现,(此时com中的参数变化,返回的是一个2D的array),这是为什么呢?谢谢
如果我这么写:
object data = col.GetData(ARRAYDATAFORMAT.ARRAY1D_NUMERIC, Default, Default) as object;
float[] data1 = (float[]) data1;
data读到了一个{float[1..100]},可是data1仍然是null