2017-01-04 5 views

答えて

1

いいえ、JITコンパイラは、メソッドをインライン化して自由です。

[MethodImpl(MethodImplOptions.NoInlining)]を追加して、GetCurrentMethod()を呼び出すメソッドにインライン化されないようにする必要があります。

メソッド名にのみ興味がある場合は、CallerMemberNameAttributeを使う方がはるかに簡単です。

+0

私はそれがおそらくインライン展開を妨げないことに同意しますが、私の経験では、メソッドがインライン展開に適格にならないようにするために複雑なコードを必要としないので、GetCurrentMethodそれでもインライン化される可能性は非常に低いでしょう。 'CallerMemberNameAttribute'は、メソッドがインライン化されている場合には、コードが書き込まれたメソッド/メンバーを参照するという点でも正しいでしょう。 –

+0

メソッドがインライン化されないと仮定すると、デバッガに表示されない生産エラーを追跡するのが難しいものが得られます –

+0

仮定に頼ることはできません。私の経験では、メソッドに追加する「複雑な」コードほど、インライン化する必要がない可能性が低いため、メソッドがインラインになる可能性は低いと思われます。インラインヒューリスティックは、私の経験では単純な方法を好む。 –

関連する問題