问题标签 [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 回答
5743 浏览

.net - PowerShell Invoke-Sqlcmd - 不返回 DataTable 或 DataSet

如果我执行以下操作,

(其中只是有效内容的占位符)

然后返回的类型如下所示:

理想情况下,我想将 $a 传递给一个接受 System.Data.DataSet (或类似)形式的 .NET 类型的函数。

有关详细信息,我正在使用 Chad Miller 的 SQLPS 模块,该模块在 Windows 7 下的 PowerShell 2 上包装了早期 SQL Server (SQL Server 2008) 的官方 MS 发行版。

我怀疑这可能与装箱和拆箱有关,但我不清楚。

有没有办法将查询结果作为 System.Data.DataSet 类型返回?

0 投票
6 回答
15907 浏览

java - 取消装箱的空对象会引发意外的 NullPointerException

如果您运行以下代码,

您将获得以下堆栈跟踪,

为什么没有编译器警告或任何东西?恕我直言,拆箱是一个非常令人讨厌的微妙之处,或者我可能只是天真。


除了@Javier提供的答案之外,如果您使用的是 Eclipse,则需要执行以下操作才能启用此功能:

  1. 导航到Window> Preferences> Java> Compiler>Errors/Warnings
  2. 展开潜在的编程问题
  3. 将装箱和拆箱转换切换为“警告”或“错误”
  4. 点击“确定”
0 投票
8 回答
14408 浏览

c# - 如何从对象拆箱到它包含的类型,在编译时不知道该类型?

在运行时,我得到某种类型的盒装实例。如何将其拆箱为基础类型?

0 投票
0 回答
76 浏览

c#-4.0 - 如何使用 value = null 检查拆箱可空类型的类型?

看看这个方法:

对于Nullable类型的表达式if(viewModelParams[paramKey] is T),如果字典中的值为 null,则无法正常工作,以澄清:

我知道可空类型( Boxing Nullable Types )的装箱和拆箱概念,但我不知道if(viewModelParams[paramKey] is T)在这种情况下用哪个表达式替换?

0 投票
2 回答
844 浏览

java - 如果包装器使用拆箱,那么需要什么 intValue() 方法?

例如,看看这段代码:

如您所见,我有两种方法可以将整数值从包装器复制到原始值:

我可以使用拆箱

或者

我可以使用方法Integer#intValue()

那么在已经拆箱的情况下需要一个方法吗?

0 投票
2 回答
8349 浏览

java - Java 6 与 Java 7 之间自动拆箱的差异

我注意到 Java SE 6 和 Java SE 7 之间的自动拆箱行为存在差异。我想知道为什么会这样,因为我找不到这两个版本之间这种行为变化的任何文档。

这是一个简单的例子:

这与 Java SE 7 中的 javac 编译得很好。但是,如果我给编译器“-source 1.6”参数,我会在最后一行得到一个错误:

我尝试下载 Java SE 6 以使用本机版本 6 编译器进行编译(没有任何 -source 选项)。它同意并给出与上述相同的错误。

那么给了什么?从更多的实验来看,Java 6 中的拆箱似乎只能拆箱(在编译时)明显属于装箱类型的值。例如,这适用于两个版本:

因此,似乎在 Java 6 和 7 之间,取消装箱功能得到了增强,因此它可以一口气强制转换和取消装箱对象类型,而无需(在编译时)知道该值是否属于正确的装箱类型。但是,通过阅读 Java 7 发布时编写的 Java 语言规范或博客文章,我看不出这件事有什么变化,所以我想知道变化是什么,这个“特性”叫什么?

只是好奇:由于更改,可能会触发“错误”的拆箱:

这编译得很好,但在运行时会给出 ClassCastException。

对此有任何参考吗?

0 投票
1 回答
256 浏览

c# - 装箱的值类型是否与对象中的实际值类型具有相同的地址?

MSDN unbox确实

  1. 对象引用被压入堆栈。
  2. 对象引用从堆栈中弹出并拆箱到值类型指针。
  3. 值类型指针被压入堆栈。

在这种情况下,对象引用不是与值类型指针相同吗?(这两个值都是堆中值类型的地址,因为值类型是对象中的唯一成员)?

例如,一个元素数组:数组的地址与数组的第一个元素的地址相同。

0 投票
3 回答
604 浏览

haskell - 在可存储和拆箱之间转换

由于这个问题的答案,我希望能够从 Data.Vector.Unboxed.Unbox 的实例构造Foreign.Storable.Storable实例(反之亦然)。这可能吗?

我知道的最接近的是vector-th-unbox,但这只会创建一个不可装箱的实例。

0 投票
1 回答
318 浏览

performance - 在四个元组的向量中取消装箱值

作为更复杂代码的一部分,我正在尝试调试一个性能问题。似乎append我用来创建一个动态的、可增长的向量的(Int,Int,Int,Int)函数导致Int元组中的一个在被写入向量之前被装箱和拆箱。我写了一个更简单的代码来重现这个问题 - 它似乎只有在我在函数中添加矢量增长功能时才会发生append- 下面的示例代码(除了重现问题之外它没有做太多有用的工作),然后是core其中显示的片段装箱和拆箱的值:

GHC 生成一个append用于gridWalk. 该功能$wa在核心 - 请注意装箱的 Int 参数:

gridWalk调用时将值框起来append

因此,效果似乎是在插入 的向量之前将值gridWalk装箱并取消装箱。标记不会改变行为 - 那些装箱的值只是在.append(Int,Int,Int,Int)append INLINEgridWalk

我将欣赏有关如何取消装箱此值的指示。我想append在重构它的同时保留它的功能(即,当容量超过时处理向量增长)。

GHC版本是7.6.1. 矢量版本是0.10.

0 投票
2 回答
3151 浏览

c# - C# DataTable vs 一些通用集合性能

我知道DataTable我们在插入/获取数据时正在使用装箱/拆箱。例如,如果我们有大量仅包含int's 的数据,那么使用某种泛型不是更快,DataTable比如说MyDataTable<int>,这将导致避免装箱/拆箱开销吗?