问题标签 [unboxing]

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 投票
3 回答
2766 浏览

.net - 装箱和拆箱是否具有相同的性能影响?

装箱和拆箱是否具有相同的性能影响?或者说,拆箱更快?

(如果有,能否简要说明主要原因。)

谢谢

0 投票
1 回答
534 浏览

c# - 我可以拆箱一个字符串吗?

我所理解的拆箱是当我将一个对象拆箱为valuetype时,例如 MSDN 示例:

所以我只是在想,一个字符串可以拆箱吗?我认为,不,它不能,因为没有可以表示字符串的值类型。我对吗?

0 投票
1 回答
265 浏览

c# - 如何将一个盒子拆箱到一个未知类型的 ICollection?

我有一个可以容纳对象的 IRecord 对象。这些对象的名称作为属性保存在映射中。我遍历属性并通过执行将它们从 IRecord 中取出

这些对象始终是 ICollections。但是,我不知道 ICollection 将持有什么类型。如何在不知道 ICollection 将持有什么的情况下将对象拆箱到正确的 ICollection?

如果 record[property 是 ICollection,则下面的代码是一个工作版本,所以我想将其更改为它可以采用任何 ICollection。

0 投票
1 回答
217 浏览

haskell - 如何在 Haskell 中为 StablePtr 提供 Data.Vector.Unbox 实例?

我想用这个vector包来存储未装箱的数组StablePtr a

我如何使用以下(或其变体):

声明一个Unbox实例StablePtr a

0 投票
1 回答
343 浏览

c# - 从对象中拆箱值类型

我一直在尝试理解这一段,但不知何故我无法在脑海中虚拟化它,请有人详细说明一下:

拆箱与装箱并不完全相反。拆箱操作比装箱成本低得多。拆箱实际上只是获取指向对象中包含的原始值类型(数据字段)的指针的操作。实际上,指针指向已装箱实例中未装箱的部分。因此,与装箱不同,拆箱不涉及复制内存中的任何字节。做出这一重要说明后,请务必注意,拆箱操作通常会在复制字段之后进行。

杰弗里里希特 (2010-02-05)。通过 C# 进行 CLR(Kindle 位置 4167-4171)。OReilly Media - A. Kindle 版。

0 投票
2 回答
1777 浏览

java - 关于第二种说法,下列哪项是正确的?(拆箱和自动装箱)

我已经在互联网上寻找并尝试解决这个问题。谁能正确回答并解释原因?太感谢了!

看下面的代码。

关于第二种说法,下列哪项是正确的?

  1. 该语句执行拆箱

  2. 该语句执行自动换行。

  3. 该语句执行自动装箱。

  4. 它会导致错误,因为您无法将原始类型分配给包装类对象。

0 投票
3 回答
315 浏览

java - 关于哈希表中的 doublevalue() 的混淆

  1. bal = ((Double)balance.get("John Doe")).doubleValue();内有什么用doubleValue?(我知道它将对象转换为双值)但是如果我没有这个程序运行就可以了。
  2. (如果我错了,请纠正我) balance.get在这里得到一个双值对象,3434.34并且(双)在它前面进行拆箱并将其转换为双值的双对象,那么如何以及为什么doubleValue()将这个双3434.34对象视为对象??????
0 投票
1 回答
1645 浏览

haskell - 如何在 Haskell 中编写 Data.Vector.Unboxed 实例?

我有一个数字应用程序,它对概率的负对数做了很多工作,它(因为概率范围从零到一)取正双精度值或负无穷大(如果基础概率为零)。

我将这些与新类型一起使用Score,如下所示:

现在,在 Viterbi 算法的一个实现中,我已经使用Data.Vector了很多,而且确实有一些Data.Vectors Score。在尝试进行一些性能调整时,我决定尝试使用Data.Vector.Unboxed. 但是,我需要为 编写一个Unbox不能派生的实例,而且我不太清楚我需要做什么(特别是类型类的契约是什么Unbox)。由于Score确实Double具有一些有用的构造函数和语义,我认为这应该是可能的。据我所知,我需要能够判断sData.Vector.Unboxed向量中的每个插槽Score必须有多大,并且我猜如何读取和写入它们(但见鬼,它们很像Doubles)。

那么,我该怎么办?谢谢!

0 投票
1 回答
102 浏览

haskell - 密集的信号树

我收集实时信号,计算派生信号并将原始数据和派生数据存储在循环缓冲区中,因此我只保存最后一百万个样本。

有时我需要序列化所有信号的当前值。所以我需要类似的东西:

SignalBuffer是一个序列SignalValue。它可以是一个未装箱的浮点数组。Haskell 可以Functor为我派生实例,因此我可以使用从每个fmap中获取最后一个并将结构传递给以进行序列化。SignalValueSignalBufferAeson

如何实现循环缓冲区 API,SignalBuffer以便在新滴答到达时将新值推送到所有缓冲区?我想节省内存,所以我想我必须使用未装箱的数组。使用可变的未装箱数组(STUArray?)是否有利,因此数组更新不会堆积在内存中?是否可以在此设置中使用可变数组?我已经准备好改变MyDataCurrentSignals无论做什么工作。

我知道如何实现循环缓冲区,问题是如何优雅地将更新应用于MyData.

我在想类似的东西

一些信号是其他信号的“卷积”(不是真正的卷积,而是一种类似的处理)。要更新信号的缓冲区,我需要访问其他信号的缓冲区——这就是 UpdateFunc 接受MyDataSignalValue返回缓冲区修改函数的原因。

updateAllBuffers然后“拉链”D0 UpdateFuncMyData获得新的MyData.

当然,我已经准备好使用Modifier适合我任务的任何东西——它可以是一个函数、一个单子值等。

0 投票
3 回答
661 浏览

java - 为什么 Java 编译器有时允许对 null 进行拆箱?

例如:

编译时失败,但

(通常)在运行时失败。试图返回 justnull也会导致编译错误,所以我认为有多个路径会导致编译器推断出null可能是自动装箱的int?为什么 javac 不能编译这两种情况并出现相同的错误?