Tag: 拆箱

它是如何从一个枚举派生System.Enum是一个整数在同一时间?

编辑 :底部的评论。 另外, 这个 。 这是什么让我困惑。 我的理解是,如果我有这样的枚举… enum Animal { Dog, Cat } …我基本上做了什么是定义了一个值types称为Animal与两个定义值, Dog和Cat 。 这种types派生自引用types System.Enum (通常情况下,值types通常不会这样做 – 至less在C#中是不允许的,但在这种情况下允许这样做),并且具有用于来回转换int值的工具。 如果我刚刚描述的枚举types的方式是真实的,那么我期望下面的代码抛出一个InvalidCastException : public class Program { public static void Main(string[] args) { // Box it. object animal = Animal.Dog; // Unbox it. How are these both successful? int i = (int)animal; Enum e = […]

与generics拳击和拆箱

创build整数集合(例如)的.NET 1.0方法是: ArrayList list = new ArrayList(); list.Add(i); /* boxing */ int j = (int)list[0]; /* unboxing */ 使用这个惩罚是由于拳击和拆箱造成的types安全和性能的缺乏。 .NET 2.0的方法是使用generics: List<int> list = new List<int>(); list.Add(i); int j = list[0]; 拳击的价格(据我了解)是需要在堆上创build一个对象,将堆栈分配的整数复制到新的对象,反之亦然拆箱。 generics的使用如何克服这一点? 堆栈分配的整数是否停留在堆栈上,并从堆中指向(我想这不是因为它会超出范围会发生什么情况)? 似乎仍然需要将其复制到其他地方。 究竟是怎么回事?

使用无盒装载体自动分化

是否有一个Haskell库自动区分与无盒子的vector? Numeric.AD的grad函数需要一个Traversable的实例,而Data.Vector.Unboxed则不是。

拳击/拆箱和types转换有什么区别?

拳击/拆箱和types转换有什么区别? 通常,这些术语似乎可以互换使用。

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

我已经注意到在Java SE 6和Java SE 7之间的自动拆箱行为有所不同。我想知道为什么,因为在这两个版本之间我找不到任何有关此行为更改的文档。 这是一个简单的例子: Object[] objs = new Object[2]; objs[0] = new Integer(5); int myInt = (int)objs[0]; 这个编译良好的javac从Java SE 7.但是,如果我给编译器“-source 1.6”参数,我在最后一行得到一个错误: inconvertible types found : java.lang.Object required: int 我尝试下载Java SE 6以使用本机版本6编译器进行编译(不带任何-source选项)。 它同意并给出与上述相同的错误。 那么给了什么? 从一些更多的实验看来,Java 6中的拆箱似乎只能清除(在编译时)是盒装types的值。 例如,这两个版本的作品: Integer[] objs = new Integer[2]; objs[0] = new Integer(5); int myInt = (int)objs[0]; 所以看起来,在Java 6和7之间,拆箱function得到了增强,因此它可以一次性投射和取消投放对象types,而不知道(在编译时)该值是否是适当的盒装types。 但是,阅读Java语言规范或Java 7发布时撰写的博客post,我看不出有什么变化,所以我想知道这个变化是什么,这个“特性”叫做什么? […]

为什么我不能取消一个int作为小数?

我有一个IDataRecord reader ,我正在检索一个小数,如下所示: decimal d = (decimal)reader[0]; 由于某种原因,这会抛出一个无效的转换exception,说“指定的转换无效”。 当我做reader[0].GetType()它告诉我,它是一个Int32。 据我所知,这不应该是一个问题…. 我已经testing了这个片段,这工作得很好。 int i = 3750; decimal d = (decimal)i; 这让我挠脑袋,想知道为什么它不能将读取器中包含的int作为十进制数来打开。 有谁知道为什么这可能会发生? 我错过了些微妙的东西吗?

什么是拳击和拆箱,什么是折衷?

我正在寻找一个清晰,简洁和准确的答案。 作为实际答案,理想情况下,虽然链接到良好的解释欢迎。