- PR -

C# DLLの引数にNULLを渡したい

1
投稿者投稿内容
いろは
常連さん
会議室デビュー日: 2005/05/11
投稿数: 31
投稿日時: 2005-11-08 13:44
いろはです。

C#からVCで作ったDLLを呼び出しています。
DLLの引数にNULLを渡したいのですが、呼び出し側でどう書いて良いかわかりません。

DLL側とC#の宣言例です。
DLL : BOOL CheckFunc( double* param )
C# : bool CheckFunc( ref double param )

unsafeなども使ってみてごちゃごちゃやってみましたが、わかりませんでした。

いきさつとしては、DLL内のスレッドの状態をチェックする関数なのですが、
paramに進み具合を設定してくれます。が必要がなければNULLを入れることができます。
値自体を受け取っても構わないのですが、こういう場合どう書いたら良いのかという
疑問が残りましたので、質問しました。

以上、よろしくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-11-08 13:47
System.IntPtr型を渡すオーバーロードを追加して、System.IntPtr.Zeroを渡すようにすればいいでしょう。

<追記>
IntPtr型はポインタのマネージ表現であるため、値渡しで十分です。
void*とIntPtrが同じものと言うことです。
ですのでref IntPtrとするとvoid**と同じになってしまうので要注意。-

[ メッセージ編集済み 編集者: Hongliang 編集日時 2005-11-08 13:50 ]
いろは
常連さん
会議室デビュー日: 2005/05/11
投稿数: 31
投稿日時: 2005-11-08 14:09
Honglianさま 早速ありがとうございます。

>System.IntPtr型を渡すオーバーロードを追加して、System.IntPtr.Zeroを渡すようにすればいいでしょう。

あっ、そうか。
呼び出し方自体を変えて(追加して)やればいいんですね。
bool CheckFunc( IntPtr param )
っと言う具合に。

VCから移ってまだ経験が浅く、簡単な事で躓いたりしております。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)