问题标签 [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.
c# - 使用泛型装箱和拆箱
.NET 1.0 创建整数集合的方式(例如)是:
使用它的代价是由于装箱和拆箱而缺乏类型安全性和性能。
.NET 2.0 的方式是使用泛型:
装箱的代价(据我所知)是需要在堆上创建一个对象,将堆栈分配的整数复制到新对象,反之亦然。
泛型的使用如何克服这个问题?堆栈分配的整数是否保留在堆栈上并从堆中指向(我猜不是这种情况,因为当它超出范围时会发生什么)?似乎仍然需要将它复制到堆栈之外的其他地方。
到底发生了什么?
java - 拳击拆箱、cglib、spring 和 NoSuchMethodError 之谜
我在我的项目中使用 Spring 和 GWt。在少数情况下NoSuchMethodError
,当我调用 spring bean 代理的方法时,我会被 CGLIB 抛出。
如果我查看错误,它表明它试图找到一个使用Integer
对象而不是基本int
字段的方法。
例如,我有一个在我的 spring bean 中定义的方法
当我调用此方法时,会引发错误:NoSuchMethodError
这表明它尝试saveObject
使用字段java.lang.Integer
而不是基本int
字段(使用 I 键)查找方法
有什么问题 ?是否有装箱/拆箱问题?我确切地说,我用基本的 int 而不是 Integer 来调用这个方法。
c# - 为什么编译器会发出框指令来比较引用类型的实例?
这是一个简单的泛型类型,其唯一的泛型参数受限于引用类型:
csc.exe生成的IL是:
因此,在进行比较之前,每个参数都被装箱。
但是如果约束表明“T”永远不应该是一个值类型,为什么编译器要装箱r1
和r2
?
c# - 指向 C# 中类型变量的指针:接口、泛型、对象还是类?(装箱/拆箱)
首先,如果这个问题被问了一千次,我很抱歉。我读了我的 C# 书,我用谷歌搜索了它,但我似乎找不到我正在寻找的答案,或者我错过了重点。
我对整个装箱/拆箱问题感到非常困惑。假设我有不同类的字段,所有返回类型变量(例如'double'),我希望有一个变量指向这些字段中的任何一个。在普通的旧 CI 中会执行以下操作:
我有一个计时器调用一个函数并传递引用变量的值:
我寻找指针的原因是因为 newVar 在运行时发生变化,链接到一个事件:
这如何在 C# 中完成?
EDIT1:解释了引用的目的。
EDIT2:做了一些不正确的陈述,删除它们并缩短了问题。
c# - List泛型类的性能
我试图检查拳击和不拳击的表现。这是一个代码:
但是对象列表比 p1 列表工作得更快。为什么?
1139 9256
1044 6909
c# - 装箱/拆箱 - 只有值类型?Ref.types - 铸造?
从 MSDN 我读到装箱/拆箱是将值类型视为对象。但是当我读到 ArrayList 时,它读到它也可以装箱。所以我很困惑,因为 ArrayList 将值和引用类型作为对象保存。此外,以下不是在术语方面的拆箱,它只是铸造?
c# - 如何有效地调整字典中使用的值数组的大小,而无需装箱
在下面的代码中,Pages 定义为
我正在尝试动态增加这个数组的大小。谁能告诉如何增加最里面的浮动 [] 的大小?
失败 1
我尝试了以下代码并获取索引超出范围异常
失败 2
以下给出了编译时错误(属性、索引或动态成员不能用作 ref 值)
问题
调整此数组大小的最有效答案是什么?
如果最终大小可能是 100-200 个浮点数或 700-900 个浮点数,答案会改变吗?
如果我将分配大小从 +1 更改为 +128 会怎样?..或更大?
c# - C#:从保存对象的字典中返回 T
用 forDictionary<Type,object>
代替不是无效Dictionary<Type,T>
吗?
每次我添加一个 ICustomerService 它都会被装箱。
如果我有 Type,T 应该没有拳击,你怎么看?
c# - 你能避免在记忆通用方法中拆箱吗?
我有一个通用方法,用于将数据库中的字符串值转换为实际转换值。
问题是在初始化期间我不知道数据库中的数据是什么类型,只有在第一次调用时我才能做出这个决定。
有没有办法以不强制拆箱缓存的值类型的方式构造它?(不改变包含类的签名)
.net - 装箱本机 C++ 指针
我有一个指向本机类的指针,并希望将其临时包装在一个对象中。我假设 System::Reflection::Pointer::Box() 函数将是要走的路。但是我无法将第二个参数格式化为它。
我收到一个运行时错误,上面写着“类型必须是指针”,我想它应该是。但我无法弄清楚语法。