Если я напишу (или использую) общий класс, например Составьте список и параметризуйте его двумя разными перечислимыми типами, получу ли я две копии кода JITted? Учитывая следующие статьи, в которых обсуждается, как JITter генерирует одну копию для ссылочных типов и одну копию для каждого типа значения, я думаю, что это сводится к следующему: «Считается ли каждое конкретное перечисление отдельным типом значения для целей JITting?»
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 / вызывает собственный код, где я могу взломать отладчик и изучить стек вызовов - в частности, адрес возврата, но, возможно, кто-то сможет авторитетно ответить на основе языковых правил, о которых я ' м не в курсе ...