1. ホーム
  2. c#

[解決済み】C#のインライン関数?

2022-03-30 16:04:38

質問

C#で"inline functions"はどうやるんですか?コンセプトがよくわからないのですが。無名メソッドのようなものですか?ラムダ関数のようなものですか?

: 回答は、ほぼすべて「能力」を扱っています。 インライン関数 つまり、関数呼び出しの場所を呼び出し側のボディに置き換える、手動またはコンパイラによる最適化です。 匿名(ラムダ)関数 をご覧ください。 jalfの回答 または みんなが言っている「ラムダ」とは何ですか? .

どのように解決するのか?

.NET 4.5でようやく、CLRでヒント/サジェストができるようになりました。 1 メソッドのインライン化には MethodImplOptions.AggressiveInlining という値を設定します。Mono の trunk (本日コミット) でも利用可能です。

// The full attribute usage is in mscorlib.dll,
// so should not need to include extra references
using System.Runtime.CompilerServices; 

...

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void MyMethod(...)

1 . 以前はここで "force" が使われていました。この用語を明確にするようにします。コメントやドキュメントにあるように The method should be inlined if possible. 特にオープンなMonoでは、インライン化や一般的な技術的な制限(仮想関数など)があるため、Monoに特化した技術的な制限があります。全体として、これはコンパイラへのヒントなのですが、それが求められているのでしょう。