コードをJava(1.6)からC#に手動で変換し、プリミティブ(intとdouble)の動作に問題があります。唯一のいくつかはJavaとC#でオートボクシングとアンボクシングの動作が異なっています
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
許可されている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#
が、Javaで自動的に行われることが表示されます私は違い、あらゆる根本的な根拠の体系的な分析のために感謝するだろう。 C#ので
私は、リストがJavaでタイプ消去の前に存在していたという印象を受けましたか、あなたが言っていることを誤解していますか? –
RHSeeger
@RHSeeger、リストは一般的なタイプです。 /がJavaのジェネリックで、タイプ消去で実装されています。これは、List がType Erasureの前に存在しなかったことを意味します(少なくともTypeパラメータでは)。リストは生のタイプのリストに変換されます。 –