小编Wil*_*l S的帖子

.NET JIT编译器是否为使用不同枚举参数化的泛型生成不同的代码?

如果我编写(或使用)泛型类,例如List,并使用两种不同的枚举类型对其进行参数化,我是否会获得两个代码JITted的副本?鉴于以下文章讨论了JI​​Tter如何为引用类型生成一个副本,以及每个值类型的一个副本,我认为这归结为"为了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<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 - 特别是返回地址,但也许有人可以根据我的语言规则进行权威性回答.我不知道......

.net generics enums jit

5
推荐指数
1
解决办法
235
查看次数

标签 统计

.net ×1

enums ×1

generics ×1

jit ×1