如果我编写(或使用)泛型类,例如List,并使用两种不同的枚举类型对其进行参数化,我是否会获得两个代码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<T>
{
}
static void Main(string[] args)
{
var x = new C<A>();
var y = new C<B>(); // does this JIT a new C constructor for enum type B?
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有兴趣知道这一般,但也特别针对.NET CF 3.5(WindowsCE)JIT编译器(编辑:因为我对可能的代码膨胀影响感兴趣).有关找到这个的最佳方法的任何建议?我正在考虑在C类中编写一个P/Invokes到本机代码的函数,在那里我可以进入调试器并检查callstack - 特别是返回地址,但也许有人可以根据我的语言规则进行权威性回答.我不知道......