4

次のメソッドは C++ (ATL COM dll) にあります。

Void Write( Const VARIANT *pData)

pDataデータ型 の 2 次元配列ですVariant

この参照を C# .NET プロジェクトに追加すると、IDE はメソッドを次のように表示します。

Void Write( ref object pData);

C# から 2 次元配列を渡すにはどうすればよいですか?

4

2 に答える 2

0

s の配列は、VARIANTVARIANT 型にうまく適合します。次のようにすることができます。

void Write(VARIANT vData)

ここでvData.vt == (VT_ARRAY | VT_VARIANT)、 およびvData.parrrayは配列データです (安全な配列 - 任意の次元で使用でき、配列記述子自体に境界と次元数が含まれます)。C# はそれを正しく行うことができます。

于 2013-03-05T11:38:12.660 に答える
0

アンマネージ コード (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 があるので、この最後の発言は関係ありません。

于 2014-01-21T08:23:05.840 に答える