次のメソッドは C++ (ATL COM dll) にあります。
Void Write( Const VARIANT *pData)
pData
データ型 の 2 次元配列ですVariant
。
この参照を C# .NET プロジェクトに追加すると、IDE はメソッドを次のように表示します。
Void Write( ref object pData);
C# から 2 次元配列を渡すにはどうすればよいですか?
s の配列は、VARIANT
VARIANT 型にうまく適合します。次のようにすることができます。
void Write(VARIANT vData)
ここでvData.vt == (VT_ARRAY | VT_VARIANT)
、 およびvData.parrray
は配列データです (安全な配列 - 任意の次元で使用でき、配列記述子自体に境界と次元数が含まれます)。C# はそれを正しく行うことができます。
アンマネージ コード (c++) とマネージ コード (たとえば、c# または .NET) の間で VARIANT を交換する方法に関する非常に優れたチュートリアルがここにあり、役立つ場合があります。
編集
ずっと前に約束したように(忘れてすみません)答えを編集します:
次のように、c# で 2D 配列を宣言できます。
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 があるので、この最後の発言は関係ありません。