
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
【C#】本物の関数ポインタの使い方と関数アドレスの取り方 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
【C#】本物の関数ポインタの使い方と関数アドレスの取り方 - Qiita
C#では、これらの違いを意識することなく使えるような関数ポインタに相当する機能として、delegateが導... C#では、これらの違いを意識することなく使えるような関数ポインタに相当する機能として、delegateが導入されました。 delegateは、内部的に関数ポインタと、その関数を呼び出す上で必要な引数への参照を保持しています。 これにより、delegateは、インスタンスメソッドが存在し、さらにGCのために参照を管理しなければならないC#における「安全な関数ポインタ」としての役割を果たすのです。 ところが、delegateは主にインスタンスメソッドの呼び出しの方に最適化されており、静的関数の呼び出しが遅いです。 本来なら余分な処理が入って複雑なインスタンスメソッドの呼び出しより、静的関数の呼び出しのほうが遅いです。 このあたりはすでに記事が出ているので詳細は譲るとして、これでは不便だという声も出てきました。 IL的には、関数のアドレスをスタックにロードするldftn命令と、スタック上の関数ポ