Je cherche le moyen le plus simple d'écrire le code Java suivant in .NET p> merci p> p> p>
6 Réponses :
int[] a = new int[] { 1, 2, 3, 4, 5 };
List<int> list = a.ToList(); // Requires LINQ extension method
//Another way...
List<int> listNew = new List<int>(new []{ 1, 2, 3 }); // Does not require LINQ
Note that LINQ is available in .NET 3.5 or higher.More information
Enumerable.ToList Method
C# ToList Extension Method
(dans system.linq - juste pour compléter la réponse)
Vous avez raison, c'est le Espace de noms code> de la méthode. Merci.
Mais ce n'est pas l'équivalent. Arrays.Aslist (T ...) Cela signifie que vous n'avez pas à créer un tableau, puis à créer une liste de cela.
La liste code> renvoyée par aschiste code> est une vue plutôt qu'une copie du tableau. Je soupçonne que dans la plupart des cas, ce n'est pas ce que vous voulez (sauf si vous ne voulez que Collections.shufflle Code> Le tableau). Y a-t-il une méthode assiiliste code> [extension]?
@Tom Hawtin - packline, il n'y a pas de méthode d'extension comme Asilist code>. Je ne sais pas si .NET propose une fonctionnalité code> code> comme offert par astitution code> ... peut-être que certains peuvent clarifier.
@Tom, @Devendra: toute cette question - et la plupart des réponses - sont complètement discutées. Le type de matrice dans .NET implémente l'interface ilist arrayes.Aslist code> en Java.
@Lukeh, mais y a-t-il un équivalent de astituliste code> dans .net?
@Devendra: Non, parce que c'est complètement inutile. Arrays.Aslist Code> Retourne une liste de taille fixe IList IList Arrays.Aslist Code> dans .net, je vais mettre à jour ma réponse avec une implémentation.
@Lukeh, je me demande pourquoi cette méthode a été créée dans java code> alors? Un autre point à méditer est ce qui arrive à la matrice pontée (en Java) lorsqu'un list.add () code> est appelé.
@Devendra: Parce que les tableaux en Java ne mettent pas en œuvre Liste Arrays.Aslist CODE> est nécessaire (pour fournir une liste Liste IList arranges.Aslist code> n'est pas i> nécessaire dans .NET.
@Devendra: pas de problème. Au fait, si vous appelez Ajouter code> dans la liste renvoyée à partir de Arrays.Aslist CODE> Vous obtiendrez un non pris en chargeOrexception code>. (De même, vous obtiendrez un notsupportedexception code> in .NET si vous appelez Ajouter code> sur un tableau de tableau vers Ilist
Je ne sais pas si vous souhaitez convertir un tableau en une liste selon la réponse de Devendra ou créer une nouvelle liste peuplée en une fois si c'est la seconde, alors cela le fera:
new List<int>(){1, 2, 3, 4, 5};
La mise en œuvre de cette méthode statique ressemble à ceci.
public static class Arrays {
public static List<T> asList<T>(params T[] a)
{
return new List<T>(a);
}
}
Notez que la liste code> il y a pas b> java.util.arraylist code> (mauvaise nommage, mais c'est comme ça qu'il doit rester [en raison de la forme de série]) .
Et où avez-vous trouvé mon exemple quelque chose comme Java.Util.ArrayList?
1 parce que la réponse est très trompeuse. (Aussi, je note de noter de manière inappropriée à l'aide de " comme code>" au lieu de " à code>".) Et il y a une meilleure réponse plus ancienne (qui vient d'acquérir A -1).
@TOM: Je ne comprends pas ce qui est si trompeur, j'ai présenté la manière dont il est mis en œuvre en Java, puis écrivit l'équivalent en C # et suggéré que OP puisse utiliser l'autre solution. De bien sûr la meilleure réponse à la question serait une nouvelle liste
Pour créer un tableau unique, vous le faites simplement:
long[] arr = new[] { 1L };
Etant donné que les tableaux d'exécution ont déjà implémenté ilist arranges.Aslist code>. Il suffit d'utiliser le tableau directement ou si vous ressentez la nécessité d'être explicite à ce sujet: IList<int> yourList = Arrays.AsList(existingIntArray);
IList<int> anotherList = Arrays.AsList(1, 2, 3, 4, 5);
// ...
public static class Arrays
{
public static IList<T> AsList<T>(params T[] source)
{
return source;
}
}
return new List<int> {A,B};
Il n'est pas nécessaire d'écrire ce code sur tout en .NET car un tableau .NET est déjà un
IList code>. La traduction littérale la plus proche du code dans votre question serait simplement nouvelle [] {1l}; code>.