Создает ли компилятор .NET JIT другой код для универсального параметризованного с разными перечислениями?

Если я напишу (или использую) общий класс, например Составьте список и параметризуйте его двумя разными перечислимыми типами, получу ли я две копии кода JITted? Учитывая следующие статьи, в которых обсуждается, как JITter генерирует одну копию для ссылочных типов и одну копию для каждого типа значения, я думаю, что это сводится к следующему: «Считается ли каждое конкретное перечисление отдельным типом значения для целей JITting?»

CLR против JIT

http://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspx#csharp_generics_topic1

В коде C #:

using System.Collections.Generic;

namespace Z
{
    class Program
    {
        enum A {a}
        enum B {b}
        class C
        {
        }

        static void Main(string[] args)
        {
            var x = new C();
            var y = new C(); // does this JIT a new C constructor for enum type B?
        }
    }
}

Я интересно знать это в целом, но также конкретно для JIT-компилятора .NET CF 3.5 (WindowsCE) (EDIT: потому что меня интересуют возможные последствия раздувания кода). Есть какие-нибудь предложения о том, как лучше это узнать? Я думал о написании функции в классе C, которая P / вызывает собственный код, где я могу взломать отладчик и изучить стек вызовов - в частности, адрес возврата, но, возможно, кто-то сможет авторитетно ответить на основе языковых правил, о которых я ' м не в курсе ...

5
задан Community 23 May 2017 в 12:31
поделиться