P/Invokeとデリゲートとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > P/Invokeとデリゲートの意味・解説 

P/Invokeとデリゲート

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/09/07 20:52 UTC 版)

デリゲート (プログラミング)」の記事における「P/Invokeとデリゲート」の解説

プラットフォーム呼び出しP/Invoke)の際は、デリゲート既定でアンマネージ(ネイティブ)の関数ポインタマーシャリングされる。 例え下記のようなC言語関数がMyLibrary.DLLに実装されているとする。 typedef BOOL (__stdcall*TMyCallbackFuncPtr)(LPCWSTR fileName);/* カレントディレクトリファイル列挙する関数ファイルが見つかるごとにコールバック関数呼ばれる。 */extern __declspec(dllexport) BOOL EnumFiles(TMyCallbackFuncPtr callback); 対応するP/Invokeラッパーインターフェイスおよび呼び出し一例下記のようになるusing System;using System.Runtime.InteropServices;static class MyPInvoker{ public delegate bool MyCallbackDelegate([In, MarshalAs(UnmanagedType.LPWStr)]string fileName); [DllImport("MyLibrary.dll")] public extern static bool EnumFiles(MyCallbackDelegate callback); private static bool MyCallbackMethod(string fileName) { Console.WriteLine(fileName); return true; // 列挙続行。 } private static void Test() { EnumFiles(MyCallbackMethod); }} P/Invokeデリゲートを渡す場合は、デリゲート型インスタンスガベージコレクションにより回収されしまわないように注意する必要があるまた、コールバック関数呼び出し規約一致するようにしなければならない.NET 1.1まではstdcall呼び出し規約のみが使用可能だったが、.NET 2.0以降ではUnmanagedFunctionPointerAttribute属性明示的に指定することでcdecl呼び出し規約使用することも可能である)。

※この「P/Invokeとデリゲート」の解説は、「デリゲート (プログラミング)」の解説の一部です。
「P/Invokeとデリゲート」を含む「デリゲート (プログラミング)」の記事については、「デリゲート (プログラミング)」の概要を参照ください。

ウィキペディア小見出し辞書の「P/Invokeとデリゲート」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「P/Invokeとデリゲート」の関連用語

P/Invokeとデリゲートのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



P/Invokeとデリゲートのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのデリゲート (プログラミング) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS