31

重複の可能性:
C# のインライン関数?

C++ では、関数のインライン化を強制できます。

これはC#でも可能ですか? メソッドが小さい場合は、自動的にインライン化されます。しかし、c#/.Net で関数を強制的にインライン化することは可能ですか?

4

1 に答える 1

74

並べ替え。確かにオンにすることは、あなたの直接の制御下にはありません。IL でインライン化されることはありません。JIT によってのみ行われます。

メソッドをインライン化しないように明示的に強制することができます。MethodImplAttribute

[MethodImpl(MethodImplOptions.NoInlining)]
public void Foo() { ... }

.NET 4.5 以降では、「リクエスト」インライン化を並べ替えることもできます。

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Foo() { ... }

...しかし、強制することはできません。(.NET 4.5 より前では、その列挙値は存在しませんでした。たとえば、 .NET 4 のドキュメントを参照してください。)

于 2012-09-06T15:59:31.507 に答える