问题标签 [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.
.net - 装箱和拆箱是否具有相同的性能影响?
装箱和拆箱是否具有相同的性能影响?或者说,拆箱更快?
(如果有,能否简要说明主要原因。)
谢谢
c# - 我可以拆箱一个字符串吗?
我所理解的拆箱是当我将一个对象拆箱为valuetype时,例如 MSDN 示例:
所以我只是在想,一个字符串可以拆箱吗?我认为,不,它不能,因为没有可以表示字符串的值类型。我对吗?
c# - 如何将一个盒子拆箱到一个未知类型的 ICollection?
我有一个可以容纳对象的 IRecord 对象。这些对象的名称作为属性保存在映射中。我遍历属性并通过执行将它们从 IRecord 中取出
这些对象始终是 ICollections。但是,我不知道 ICollection 将持有什么类型。如何在不知道 ICollection 将持有什么的情况下将对象拆箱到正确的 ICollection?
如果 record[property 是 ICollection,则下面的代码是一个工作版本,所以我想将其更改为它可以采用任何 ICollection。
haskell - 如何在 Haskell 中为 StablePtr 提供 Data.Vector.Unbox 实例?
我想用这个vector
包来存储未装箱的数组StablePtr a
我如何使用以下(或其变体):
声明一个Unbox
实例StablePtr a
?
c# - 从对象中拆箱值类型
我一直在尝试理解这一段,但不知何故我无法在脑海中虚拟化它,请有人详细说明一下:
拆箱与装箱并不完全相反。拆箱操作比装箱成本低得多。拆箱实际上只是获取指向对象中包含的原始值类型(数据字段)的指针的操作。实际上,指针指向已装箱实例中未装箱的部分。因此,与装箱不同,拆箱不涉及复制内存中的任何字节。做出这一重要说明后,请务必注意,拆箱操作通常会在复制字段之后进行。
杰弗里里希特 (2010-02-05)。通过 C# 进行 CLR(Kindle 位置 4167-4171)。OReilly Media - A. Kindle 版。
java - 关于第二种说法,下列哪项是正确的?(拆箱和自动装箱)
我已经在互联网上寻找并尝试解决这个问题。谁能正确回答并解释原因?太感谢了!
看下面的代码。
关于第二种说法,下列哪项是正确的?
该语句执行拆箱
该语句执行自动换行。
该语句执行自动装箱。
它会导致错误,因为您无法将原始类型分配给包装类对象。
java - 关于哈希表中的 doublevalue() 的混淆
- 行
bal = ((Double)balance.get("John Doe")).doubleValue();
内有什么用doubleValue
?(我知道它将对象转换为双值)但是如果我没有这个程序运行就可以了。 - (如果我错了,请纠正我)
balance.get
在这里得到一个双值对象,3434.34
并且(双)在它前面进行拆箱并将其转换为双值的双对象,那么如何以及为什么doubleValue()
将这个双3434.34
对象视为对象??????
haskell - 如何在 Haskell 中编写 Data.Vector.Unboxed 实例?
我有一个数字应用程序,它对概率的负对数做了很多工作,它(因为概率范围从零到一)取正双精度值或负无穷大(如果基础概率为零)。
我将这些与新类型一起使用Score
,如下所示:
现在,在 Viterbi 算法的一个实现中,我已经使用Data.Vector
了很多,而且确实有一些Data.Vector
s Score
。在尝试进行一些性能调整时,我决定尝试使用Data.Vector.Unboxed
. 但是,我需要为 编写一个Unbox
不能派生的实例,而且我不太清楚我需要做什么(特别是类型类的契约是什么Unbox
)。由于Score
确实Double
具有一些有用的构造函数和语义,我认为这应该是可能的。据我所知,我需要能够判断sData.Vector.Unboxed
向量中的每个插槽Score
必须有多大,并且我猜如何读取和写入它们(但见鬼,它们很像Double
s)。
那么,我该怎么办?谢谢!
haskell - 密集的信号树
我收集实时信号,计算派生信号并将原始数据和派生数据存储在循环缓冲区中,因此我只保存最后一百万个样本。
有时我需要序列化所有信号的当前值。所以我需要类似的东西:
SignalBuffer
是一个序列SignalValue
。它可以是一个未装箱的浮点数组。Haskell 可以Functor
为我派生实例,因此我可以使用从每个fmap
中获取最后一个并将结构传递给以进行序列化。SignalValue
SignalBuffer
Aeson
如何实现循环缓冲区 API,SignalBuffer
以便在新滴答到达时将新值推送到所有缓冲区?我想节省内存,所以我想我必须使用未装箱的数组。使用可变的未装箱数组(STUArray
?)是否有利,因此数组更新不会堆积在内存中?是否可以在此设置中使用可变数组?我已经准备好改变MyData
,CurrentSignals
无论做什么工作。
我知道如何实现循环缓冲区,问题是如何优雅地将更新应用于MyData
.
我在想类似的东西
一些信号是其他信号的“卷积”(不是真正的卷积,而是一种类似的处理)。要更新信号的缓冲区,我需要访问其他信号的缓冲区——这就是 UpdateFunc 接受MyData
并SignalValue
返回缓冲区修改函数的原因。
updateAllBuffers
然后“拉链”D0 UpdateFunc
并MyData
获得新的MyData
.
当然,我已经准备好使用Modifier
适合我任务的任何东西——它可以是一个函数、一个单子值等。
java - 为什么 Java 编译器有时允许对 null 进行拆箱?
例如:
编译时失败,但
(通常)在运行时失败。试图返回 justnull
也会导致编译错误,所以我认为有多个路径会导致编译器推断出null
可能是自动装箱的int
?为什么 javac 不能编译这两种情况并出现相同的错误?