C#Boxing / Unboxing的替代品?

时间:2012-11-22 17:10:57

标签: c# boxing

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

2 个答案:

答案 0 :(得分:7)

使用Generics ....

更多信息here


例如

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

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

List<int> lst=new List<int>();
lst.Add(44);//no boxing or unboxing
lst.Add(100);//no boxing or unboxing

答案 1 :(得分:-1)

在那个特定的问题中,我可以说使用更通用的类型,在这种情况下使用字符串并将其解析为数字(如果是数字)。更一般的approch是创建自定义结构或使用元组字段说明它是每个案例的真实答案,但它退出丑陋。