C#Boxing/Unboxing的替代品?

Jan*_*man 1 c# boxing

我最近的代码包括很多 装箱和拆箱,因为我的很多变量都是在运行时解决的.但我已经读过拳击和拆箱在计算上是非常昂贵的,所以我想问一下是否有其他方法来装箱/拆箱类型?这是一个使用它的好习惯吗?

Ani*_*dha 7

使用Generics....

更多信息在这里


例如

List lst=new List();//non generic List accepts any kind of object
lst.Add(44);//this causes unnecessary boxing from int to object
lst.Add(100);//this causes unnecessary boxing from int to object
Run Code Online (Sandbox Code Playgroud)

如果您确定列表将始终包含整数,则可以使用泛型.

List<int> lst=new List<int>();
lst.Add(44);//no boxing or unboxing
lst.Add(100);//no boxing or unboxing
Run Code Online (Sandbox Code Playgroud)

  • @Janman所以,_you_介绍泛型类型和/或泛型方法.例如,如果你今天有一个类`SomeClass`,它包含一些类型`object`的变量,方法参数等,那么将你的类更改为`SomeClass <T>`,并在类中将`object`更改为`T `.这样你就可以在`T`是'int`时摆脱拳击.当然,详细信息取决于您的确切代码,但您没有在问题中提供代码示例. (3认同)