gpt4 book ai didi

c# - 装箱和拆箱 : when does it come up?

转载 作者:可可西里 更新时间:2023-11-01 07:49:09 26 4
gpt4 key购买 nike

所以我明白了什么是装箱和拆箱。它什么时候出现在现实世界的代码中,或者在什么例子中它是一个问题?我无法想象做这样的事情:

int i = 123;
object o = i; // Boxing
int j = (int)o; // Unboxing

...但这几乎可以肯定是过于简单化了,我什至可能在不知不觉中进行了装箱/拆箱。

最佳答案

与泛型之前相比,现在问题不大了。现在,例如,我们可以使用:

List<int> x = new List<int>();
x.Add(10);
int y = x[0];

根本不需要装箱或拆箱。

以前,我们有:

ArrayList x = new ArrayList();
x.Add(10); // Boxing
int y = (int) x[0]; // Unboxing

至少,这是最常见的装箱和拆箱体验。

如果不涉及泛型,我想我可能会说反射是我从事的项目中最常见的装箱原因。反射 API 总是使用“对象”来处理方法的返回值之类的事情 - 因为它们没有其他方法知道要使用什么。

如果您没有意识到这一点,另一个可能会引起您注意的原因是,如果您使用实现接口(interface)的值类型,并将该值传递给另一个以接口(interface)类型作为参数的方法。同样,泛型使这不再是一个问题,但如果您没有意识到这一点,它可能会是一个令人讨厌的惊喜。

关于c# - 装箱和拆箱 : when does it come up?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com