2011-03-10 5 views
8

Busco a la forma más sencilla de escribir el siguiente código JavaArrays.asList (...) en .Net

Arrays.asList(1L); 

en .Net

Gracias

+0

No hay necesidad de escribir el código en absoluto en .NET desde una matriz .NET ya es un tamaño fijo '' IList. La traducción literal más cercana del código en su pregunta sería 'new [] {1L};'. – LukeH

Respuesta

5
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 

Nota que LINQ está disponible en .NET 3.5 o superior.

Más información

+0

(en System.Linq - solo para completar la respuesta) – Massif

+0

Tiene razón, ese es el 'namespace' del método. Gracias. –

+1

Pero esto no es el equivalente. Arrays.asList (T ...) esto significa que no es necesario crear una matriz y luego crear una lista a partir de ella. –

1

no está seguro de si desea convertir una matriz a una lista de acuerdo con la respuesta de Devendra o crear una nueva lista poblada de una sola vez si es el segundo, entonces esto lo hará:

new List<int>(){1, 2, 3, 4, 5}; 

De hecho, la sintaxis de llaves para rellenar colecciones completará matrices, diccionarios, etc. ...

-1

La implementación de ese método estático se ve así.

public static <T> List<T> asList(T... a) { 
return new ArrayList<T>(a); 
} 

El equivalente para usted wold ser escribir misma clase de servicio con asList método en C# o utilizar la solución presentada por el macizo.

public static class Arrays { 
     public static List<T> asList<T>(params T[] a) 
     { 
      return new List<T>(a); 

     } 
} 
+0

Tenga en cuenta que el 'ArrayList' existe ** no **' java.util. ArrayList' (nombres pobres, pero esa es la forma en que debe permanecer [debido a la forma de serie]). –

+0

¿Y dónde encontraste mi ejemplo algo así como java.util.ArrayList? –

+0

¿Podría alguien explicar por qué -1 voto? –

0

para crear una matriz de un solo punto, sólo tiene que hacer esto:

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

Desde matrices ya se implementan IList<T> en .NET entonces no hay realmente ninguna necesidad de un equivalente de Arrays.asList. Sólo tiene que utilizar la matriz directamente, o si se siente la necesidad de ser explícita al respecto:

IList<int> yourList = (IList<int>)existingIntArray; 
IList<int> anotherList = new[] { 1, 2, 3, 4, 5 }; 

Esto es lo más cerca que se obtendrá con el original de Java: de tamaño fijo, y escribe pase a través de la matriz subyacente (aunque en este caso la lista y la matriz son exactamente el mismo objeto).

Además de los comentarios en Devendra's answer, si realmente quieres usar exactamente la misma sintaxis en .NET, se verá más o menos así (aunque en mi opinión es un ejercicio bastante inútil).

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