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)
 }

然后控制台将写入 Caller。

这个对吗?如果是这样,那么我尝试过的任何东西都不是内联的。

4

1 回答 1

0

GetCurrentMethod 防止内联(来源http://prdlxvm0001.codify.net/pipermail/ozdotnet/2011-March/009085.html

请记住,内联是在 JIT 期间完成的,而不是在编译期间完成的。

于 2013-08-22T16:54:46.930 回答