pet*_*ust 8 c# java autoboxing
我手动将代码从Java(1.6)转换为C#,并发现原语(int和double)的行为有些困难.在C#中,似乎几乎所有转换都是自动发生的
List<double> list1 = new List<double>(); // legal, C#
double d0 = 3.0;
list1.Add(d0); // legal, C#
Double dd = 2.3f; // legal, C#
list1.Add(dd); // legal, C#
List<Double> list2 = new List<Double>(); // legal, C#
double d1 = 3.0;
list2.Add(d1); // legal, C#
list2.Add(2.0); // legal, C#
double d2 = list2.get(0); // legal, C#
Run Code Online (Sandbox Code Playgroud)
但在Java中只允许一些
List<double> list1 = new ArrayList<double>(); // illegal, Java
List<Double> list2 = new ArrayList<Double>(); // legal, Java
double d1 = 3.0;
list2.add(d1); // legal, Java
list2.add(2.0); // legal, Java
double d2 = list2.get(0); // legal, Java
Run Code Online (Sandbox Code Playgroud)
我很感激系统分析差异和任何潜在的理由.
Mar*_*ell 18
在C#中,double并Double有确切同样的事情(只要你还没有创建自己的类型,称为Double,这将是愚蠢的).
double被定义为别名global::System.Double.因此,这里没有拳击.
在java中,Double是一个盒装的double,类型擦除是泛型实现的关键部分.
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |