【发布时间】:2011-03-25 22:13:48
【问题描述】:
我一直在读一本书并遇到一个声明,即泛型允许程序员在使用例如时避免装箱和拆箱。 Stack。
我认为这并不完全正确,因为堆栈(不是通用的)可以只保存引用类型变量,然后只进行强制转换,没有装箱。
编辑:AFAIK,装箱涉及 仅 值类型到对象转换。 这是正确的还是我错过了什么?
【问题讨论】:
-
您是指
Stack类还是Stack<>泛型类?它们是不同的。 -
是的,没错。只有在处理值类型时,装箱才有意义。到目前为止,大多数答案都没有抓住重点。
-
用一个具体的例子来详细说明 Cody Gray 的评论:如果你将一个字符串存储在一个非泛型集合中,该集合存储一个对该字符串的引用,并且该引用是 object 类型的。 (所有引用类型都是如此,而不仅仅是字符串。)这与装箱不同。装箱涉及创建一个包含值类型值副本的对象实例,目的是用作对象引用的目标(在这种情况下,集合将持有)。
标签: .net boxing generics unboxing