问题标签 [boxing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
23692 浏览

c# - 使用泛型装箱和拆箱

.NET 1.0 创建整数集合的方式(例如)是:

使用它的代价是由于装箱和拆箱而缺乏类型安全性和性能。

.NET 2.0 的方式是使用泛型:

装箱的代价(据我所知)是需要在堆上创建一个对象,将堆栈分配的整数复制到新对象,反之亦然。

泛型的使用如何克服这个问题?堆栈分配的整数是否保留在堆栈上并从堆中指向(我猜不是这种情况,因为当它超出范围时会发生什么)?似乎仍然需要将它复制到堆栈之外的其他地方。

到底发生了什么?

0 投票
1 回答
604 浏览

java - 拳击拆箱、cglib、spring 和 NoSuchMethodError 之谜

我在我的项目中使用 Spring 和 GWt。在少数情况下NoSuchMethodError,当我调用 spring bean 代理的方法时,我会被 CGLIB 抛出。

如果我查看错误,它表明它试图找到一个使用Integer对象而不是基本int字段的方法。

例如,我有一个在我的 spring bean 中定义的方法

当我调用此方法时,会引发错误:NoSuchMethodError这表明它尝试saveObject使用字段java.lang.Integer而不是基本int字段(使用 I 键)查找方法

有什么问题 ?是否有装箱/拆箱问题?我确切地说,我用基本的 int 而不是 Integer 来调用这个方法。

0 投票
2 回答
1262 浏览

c# - 为什么编译器会发出框指令来比较引用类型的实例?

这是一个简单的泛型类型,其唯一的泛型参数受限于引用类型:

csc.exe生成的IL是:

因此,在进行比较之前,每个参数都被装箱。

但是如果约束表明“T”永远不应该是一个值类型,为什么编译器要装箱r1r2

0 投票
4 回答
668 浏览

c# - 指向 C# 中类型变量的指针:接口、泛型、对象还是类?(装箱/拆箱)

首先,如果这个问题被问了一千次,我很抱歉。我读了我的 C# 书,我用谷歌搜索了它,但我似乎找不到我正在寻找的答案,或者我错过了重点。

我对整个装箱/拆箱问题感到非常困惑。假设我有不同类的字段,所有返回类型变量(例如'double'),我希望有一个变量指向这些字段中的任何一个。在普通的旧 CI 中会执行以下操作:

我有一个计时器调用一个函数并传递引用变量的值:

我寻找指针的原因是因为 newVar 在运行时发生变化,链接到一个事件:

这如何在 C# 中完成?

EDIT1:解释了引用的目的。

EDIT2:做了一些不正确的陈述,删除它们并缩短了问题。

0 投票
2 回答
156 浏览

c# - List泛型类的性能

我试图检查拳击和不拳击的表现。这是一个代码:

但是对象列表比 p1 列表工作得更快。为什么?
1139 9256
1044 6909

0 投票
3 回答
1947 浏览

c# - 装箱/拆箱 - 只有值类型?Ref.types - 铸造?

从 MSDN 我读到装箱/拆箱是将类型视为对象。但是当我读到 ArrayList 时,它读到它也可以装箱。所以我很困惑,因为 ArrayList 将值和引用类型作为对象保存。此外,以下不是在术语方面的拆箱,它只是铸造?

0 投票
5 回答
1189 浏览

c# - 如何有效地调整字典中使用的值数组的大小,而无需装箱

在下面的代码中,Pages 定义为

我正在尝试动态增加这个数组的大小。谁能告诉如何增加最里面的浮动 [] 的大小?

失败 1

我尝试了以下代码并获取索引超出范围异常

失败 2

以下给出了编译时错误(属性、索引或动态成员不能用作 ref 值)

问题

调整此数组大小的最有效答案是什么?

如果最终大小可能是 100-200 个浮点数或 700-900 个浮点数,答案会改变吗?

如果我将分配大小从 +1 更改为 +128 会怎样?..或更大?

0 投票
3 回答
441 浏览

c# - C#:从保存对象的字典中返回 T

用 forDictionary<Type,object>代替不是无效Dictionary<Type,T>吗?

每次我添加一个 ICustomerService 它都会被装箱。

如果我有 Type,T 应该没有拳击,你怎么看?

0 投票
5 回答
525 浏览

c# - 你能避免在记忆通用方法中拆箱吗?

我有一个通用方法,用于将数据库中的字符串值转换为实际转换值。

问题是在初始化期间我不知道数据库中的数据是什么类型,只有在第一次调用时我才能做出这个决定。

有没有办法以不强制拆箱缓存的值类型的方式构造它?(不改变包含类的签名)

0 投票
1 回答
710 浏览

.net - 装箱本机 C++ 指针

我有一个指向本机类的指针,并希望将其临时包装在一个对象中。我假设 System::Reflection::Pointer::Box() 函数将是要走的路。但是我无法将第二个参数格式化为它。

我收到一个运行时错误,上面写着“类型必须是指针”,我想它应该是。但我无法弄清楚语法。