11
votes

Arrays.Aslist (...) en .net

Je cherche le moyen le plus simple d'écrire le code Java suivant xxx

in .NET

merci


1 commentaires

Il n'est pas nécessaire d'écrire ce code sur tout en .NET car un tableau .NET est déjà un IList . La traduction littérale la plus proche du code dans votre question serait simplement nouvelle [] {1l}; .


6 Réponses :


8
votes
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

11 commentaires

(dans system.linq - juste pour compléter la réponse)


Vous avez raison, c'est le Espace de noms 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 renvoyée par aschiste 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 Le tableau). Y a-t-il une méthode assiiliste [extension]?


@Tom Hawtin - packline, il n'y a pas de méthode d'extension comme Asilist . Je ne sais pas si .NET propose une fonctionnalité comme offert par astitution ... 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 , de sorte que les tableaux vous donnent déjà la fonctionnalité fournie par arrayes.Aslist en Java.


@Lukeh, mais y a-t-il un équivalent de astituliste dans .net?


@Devendra: Non, parce que c'est complètement inutile. Arrays.Aslist Retourne une liste de taille fixe (une interface, l'équivalent Java du IList ). Le type de tableau dans .NET est déjà un IList . Si vous voulez imiter la syntaxe exacte Syntaxe de Arrays.Aslist 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 alors? Un autre point à méditer est ce qui arrive à la matrice pontée (en Java) lorsqu'un list.add () est appelé.


@Devendra: Parce que les tableaux en Java ne mettent pas en œuvre Liste ; C'est pourquoi la méthode Arrays.Aslist est nécessaire (pour fournir une liste Liste wrapper sur le tableau). Les tableaux dans .NET DOITION DOITION IList , et c'est pourquoi l'équivalent de arranges.Aslist n'est pas nécessaire dans .NET.


@Devendra: pas de problème. Au fait, si vous appelez Ajouter dans la liste renvoyée à partir de Arrays.Aslist Vous obtiendrez un non pris en chargeOrexception . (De même, vous obtiendrez un notsupportedexception in .NET si vous appelez Ajouter sur un tableau de tableau vers Ilist .)



1
votes

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};


0 commentaires

0
votes

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);

        }
}


4 commentaires

Notez que la liste il y a pas java.util.arraylist (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 " au lieu de " à ".) 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 () {1L}; Si l'OP est axé sur le résultat, ce n'est pas la façon dont il est fait. La suggestion était du développeur Java non de mon côté;).



0
votes

Pour créer un tableau unique, vous le faites simplement:

long[] arr = new[] { 1L };


0 commentaires

8
votes

Etant donné que les tableaux d'exécution ont déjà implémenté ilist code> in .NET, il n'y a pas vraiment besoin d'un équivalent de 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;
    }
}


0 commentaires

0
votes
return new List<int> {A,B};

0 commentaires