C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 28 を表示中)
■13007 / )  ”out”の使用方法について
□投稿者/ K2E (1回)-(2008/01/23(Wed) 14:34:34)

分類:[C#] 

初めましてK2Eと申します。

とあるシステムのライブラリを使用しているのですがC/C++用に

GetDoResults(unsigned int handle, unsigned int * addr, unsigned int maxLen, unsigned int * len);-@

という関数が与えられています。

この関数は「Do() ←引数省略してます 」関数実行後の結果をaddrへ、返ってきたaddrの数をlenで取得するのですが、
例えば、C/C++の場合

------------------------------------------
unsigned int addr[5];
unsigned int len;
int i;
 //Do()を実行する
 GetDoResults(uHandle, addr, 5, &len);

 for(i = 0; i < len; i++)
 {
    printf("addr %d: %d", i, addr[i])
 }
------------------------------------------
のようにGetDoResults実行後len=3が入ってくるような場合、addr[0],addr[1], addr[2]にも値が
入ってきたことを確認できています。

これと同様のことをC#でも行いたいのですが、
このシステムではC#用にもラッパークラスファイル(.csファイル)が用意されているようで@に該当する関数が

GetDoResults(unsigned int handle, out int addr, unsigned int maxLen, unsigned int aLen);-A

と定義されています。

"out int addr"引数に上記@の例のように配列の形で渡して、返ってきた結果一気に取得したいのですが、
引数をどのように宣言し、渡せばよいかわかりません。

配列の形で引数を渡す場合、色々調べてみたのですが「Func(out addr[] int)」のように渡さなくてはならないらしく
Aの関数ではそのようになっていません。

試しに引数を

int addr;

と宣言し”out addr”と渡した場合、当然ながら一つだけ値が入ってきたことを確認しましたが、
ラッパーということなので、@のように”out int addr”に正しい引数をきちんと渡すことで
複数個(lenに入ってくる値分)取得できるはずと考えています。

引数をどのように宣言すればよいか、アドバイスをいただけないでしょうか?
よろしくお願いします。







返信 編集キー/


管理者用

- Child Tree -