Do autoboxing and unboxing behave differently in Java and C#

ⅰ亾dé卋堺 提交于 2019-11-30 19:14:19

In your C# example there is no boxing or unboxing (and autoboxing) happening. double is just an alias for the struct Double.

In Java, the boxing is necessary. Because of type erasure, you can't create a List<double>, only List<Double>. At compile time, List<?> becomes List<Object> and boxing/unboxing will need to take place so you can add a native type variable to a List<Object> or assign a native variable to an element of the List.

In C#, double and Double are exactly the same thing (as long as you haven't created your own type called Double, which would be stupid).

double is defined as an alias to global::System.Double. As such, there is no boxing here.

In java, Double is a boxed double, with type-erasure being a key part of the generics implementation.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!