以下方法在 C++ 中(ATL COM dll)
Void Write( Const VARIANT *pData)
pData
是数据类型的二维数组Variant
。
当我在 C# .NET 项目中添加此引用时,IDE 将方法显示为
Void Write( ref object pData);
如何从 C# 传递二维数组?
Array of VARIANT
s fits itself well into VARIANT type. You can have it like this:
void Write(VARIANT vData)
where vData.vt == (VT_ARRAY | VT_VARIANT)
, and vData.parrray
is array data (safe array - it can by anydimensional, the array descriptor itself contains bounds and number of dimensions). C# will be able to get it right.
关于如何在非托管代码(c++)和托管代码(例如 c# 或 .NET)之间交换 VARIANT 的非常好的教程,它可能会对您有所帮助。
编辑
正如很久以前所承诺的(对不起,我忘记了)我编辑了我的答案:
您可以像这样在 c# 中声明您的二维数组:
object thearray = new object[,] {{2.0, 1.0},{-3.0, 9.0}} ;
并将其传递给您的 com 方法。你也可以这样做:
object[,] thetempmatrix = {{2.0, 1.0},{-3.0, 9.0}} ;
object thearray = thetempmatrix ;
请注意,您是否愿意定义
object[,] thearray = {{2.0, 1.0},{-3.0, 9.0}} ;
它也可以工作,但数组不会通过引用传递:假设您的 COM 方法签名中没有 const,它会由您的 COM 方法更新,但在您的 COM 方法调用退出时,您会得到与您传递的数组相同的数组。当然,最后这句话与您无关,因为您的 COM 方法签名中确实有一个 const。