0

私のコードがインライン化できるかどうか、インライン化できるかどうかを知りたいです。これを行う方法を見つけました。

Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name);

しかし、それがどのように私に伝えるべきかはわかりません。これで使用する場合:

[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static ImageCodecInfo GetEncoderInfo(ImageFormat format)
{
    Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name);
    return ImageCodecInfo.GetImageEncoders().ToList().Find(delegate(ImageCodecInfo codec)
    {
        return codec.FormatID == format.Guid;
    });
}

インライン化されている場合、コンソールは何を書くと思われますか? 私の理解では、発信者の名前を書くことになっています。たとえば、次のようになります。

Private void Caller()
 {

ImageCodecInfo GetEncoderInfo(bmpFormat)
 }

コンソールは発信者を書き込みます。

これは正しいです?もしそうなら、私が試したものはインライン化されていません。

4

1 に答える 1

0

GetCurrentMethod はインライン化を防ぎます (ソースhttp://prdlxvm0001.codify.net/pipermail/ozdotnet/2011-March/009085.html )

インライン展開はコンパイルではなく JIT 中に行われることに注意してください。

于 2013-08-22T16:54:46.930 に答える