泛型与拳击

Pau*_*ulo 3 .net generics

可能重复:
C#中的通用接口是否可以阻止装箱?(.NET vs Mono性能)

我有一个简单的问题...通过使用泛型,我是否完全摆脱了装箱/拆箱操作?

例如,通过使用List,我仍然可以获得大量的装箱/拆箱吗?

我在互联网上阅读了几个文档,但无法解决这个具体问题......

Jef*_*dge 6

如果一个类被正确编写,那么使用泛型将避免所有装箱和拆箱.相反,即时编译器将为正确处理值类型的类的每个版本生成代码.

  • @ pm100:"每个版本的类"我的意思是泛型类.它作为参数提供的每种类型都有不同的版本.JIT为提供的每种值类型创建不同的代码.它还创建了一个处理所有引用类型的版本. (2认同)

Hen*_*man 6

如果你正确使用它然后:是的,它将消除拳击.

例如,

List<int> table = new List<int>();
table.Add(1);
int x = table[0];
Run Code Online (Sandbox Code Playgroud)

不涉及任何装箱/拆箱.