List<Double> constants = new ArrayList<Double>() {{
add(1.4);
add(0.4);
add(1.2);
add(2.4);
add(4.2);
add(5);
add(6.0);
add(7.0);
}};
Répondre
En C# 3.0 ou plus,
var constants = new List<double> { 1.4, 0.4, 1.2, 2.4, 4.2, 5D, 6D, 7D };
constants
est implicitly typed-List<double>
avec le mot-clé var
. La liste est initialisée (en mettant les nombres entre accolades) en utilisant la syntaxe collection-initializer.
Cela équivaut à (C# 2.0 ou plus):
List<double> constants = new List<double>();
constants.Add(1.4);
constants.Add(0.4);
constants.Add(1.2);
constants.Add(2.4);
constants.Add(4.2);
constants.Add(5D);
constants.Add(6D);
constants.Add(7D);
Vous pouvez laisser les D
s, mais je préfère être explicite avec les littéraux numériques. Sur une autre note, si cela représentait réellement une liste de constantes sans nom, il serait bon d'utiliser une collection immuable telle que ReadOnlyCollection<T>
. Par exemple:
var constants = new List<double>{1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7}.AsReadOnly();
List<double> constants = new List<double>() { 1.4, 0.4, 1.2, 2.4, 4.2, 5, 6, 7 };
Comme ceci:
List<Double> constants = new List<Double>() { 1.4, 0.4, ... };
Il utilise une nouvelle fonctionnalité dans C# 3.0.
Si vous utilisez encore VS2005, vous pouvez écrire
List<Double> constants = new List<Double>(new double[] { 1.4, 0.4, ... });
Ce n'est pas tout à fait la même chose.
La première ligne est transformée par le compilateur en une série d'appels Add
sur la liste.
La deuxième ligne crée un tableau double[]
et le transmet au constructeur List<T>
, qui le copie dans la liste.
Ce qui précède est simplement une initialisation de la liste statique, l'équivalent en C# serait:
new List<Double>(){ 1.4, 0.4 }
Notez que le code Java ci-dessus crée en fait une nouvelle classe interne qui est une sous-classe de ArrayList, et puis l'initialise. Vous ne devriez normalement pas vous inquiéter à ce sujet, mais cela vaut la peine de le savoir (il aura un pointeur implicite this
et provoquera des maux de tête lors de la sérialisation)
+1 pour la sous-classe – Ishtar
L'utilisation d'une classe interne n'est probablement pas la meilleure façon de le faire en Java. Vous voudrez probablement faire quelque chose comme
List<Double> constants = Arrays.asList(new Double[]{1.4,0.4,1.2,2.4,4.2,5.0,6.0,7.0});
- 1. Quel est l'équivalent C# de ce code
- 2. quel est le problème avec ce code de condition C#
- 3. Quel est l'équivalent MVC de ce code:
- 4. Quel type de code est-ce?
- 5. Quel est le problème avec ce code regex C++?
- 6. Quel est le problème avec ce code C++?
- 7. Quel est le problème avec ce code C++?
- 8. Quel est le VB.NET équivalent à ce code C#?
- 9. Quel est le problème avec ce code?
- 10. Quel est le problème dans ce code?
- 11. Quel est le problème avec ce code?
- 12. Quel est le problème avec ce code?
- 13. Quel est le problème avec ce code?
- 14. Quel est le problème avec ce code?
- 15. Quel est le problème avec ce code?
- 16. Quel est opérateur => dans ce code
- 17. Quel est le problème avec ce code?
- 18. Quel est le problème avec ce code?
- 19. Quel est le problème avec ce code?
- 20. Quel est le problème avec ce code?
- 21. Quel est le code JSON renvoyé par ce code CF?
- 22. Quel est le but de ce modèle de code?
- 23. Quel est le problème avec ce code de frameset?
- 24. Quel est le problème avec ce code de connexion facebook?
- 25. Quel est le problème avec ce code de jeu Python?
- 26. Quel est le problème avec ce morceau de code jQuery?
- 27. Quel type de données est ce code JavaScript?
- 28. quel est le problème dans ce code (openAl dans vC++)
- 29. Quel est le code suivant equvalent pour C# Code
- 30. Python Eval: Quel est le problème avec ce code?
Vous n'avez pas besoin de le faire 5D, il est inféré. –
@Yuriy: Non, ce n'est pas inféré. C'est implicitement converti. – SLaks
@SLaks Je suis corrigé. –