¿Cómo es una matriz de cadena donde no se sabe dónde está el tamaño de la matriz en C# .NET?matriz de cadena con tamaño desconocido
String[] array = new String[]; // this does not work
¿Cómo es una matriz de cadena donde no se sabe dónde está el tamaño de la matriz en C# .NET?matriz de cadena con tamaño desconocido
String[] array = new String[]; // this does not work
¿Hay alguna razón específica por la que necesite utilizar una matriz? Si no conoce el tamaño antes de mano es posible que desee utilizar List<String>
List<String> list = new List<String>();
list.Add("Hello");
list.Add("world");
list.Add("!");
Console.WriteLine(list[2]);
le dará una salida de
!
MSDN - List(T) para más información
¿Serán ellos? agregado después de la orden en que los coloqué, para que pueda llamarlos como array [int] ... – sv88erik
se agregarán en el orden en que los agrega, puede acceder a ellos con un indexador. Respuesta editada para un ejemplo. –
Sí, aún puede indexar los elementos en una lista genérica de la misma manera que usa una matriz. – David
No se puede crear una matriz sin un tamaño. Necesitarías usar una lista para eso.
Creo que puede estar buscando la clase StringBuilder. Si no es así, entonces la clase de lista genérica en forma de cadena:
List<string> myStringList = new List<string();
myStringList.Add("Test 1");
myStringList.Add("Test 2");
O, si tiene que estar absolutamente seguro de que las cadenas se mantienen en orden:
Queue<string> myStringInOriginalOrder = new Queue<string();
myStringInOriginalOrder.Enqueue("Testing...");
myStringInOriginalOrder.Enqueue("1...");
myStringInOriginalOrder.Enqueue("2...");
myStringInOriginalOrder.Enqueue("3...");
Recuerde que con la clase List, la El orden de los artículos es un detalle de implementación y no se garantiza que se mantendrán en el mismo orden en que los ingresó.
¿por qué estaría buscando StringBuilder? esto no tiene sentido –
Parece que está intentando juntar varias cuerdas. Añadí que puede querer usar la clase List si quiere hacer un seguimiento de varias cadenas. Además, la clase Queue si necesita retener el orden. – jasonh
"con la clase List, el orden de los elementos es un detalle de implementación y no se garantiza que se mantendrán en el mismo orden en que los colocaste". Eso no es correcto La lista conserva el orden: si realiza una secuencia de Agrega, luego itere la lista, los elementos estarán en el orden en que los agregó. (Por supuesto, puede insertar elementos explícitamente en el medio de la lista, ordenar la lista, etc., pero las cosas permanecen en el orden que usted solicitó). Probablemente esté pensando en Dictionary, HashSet, etc. – itowlson
Supongo que el tamaño de la matriz es un valor calculado.
int size = ComputeArraySize();
// Then
String[] array = new String[size];
Se puede utilizar una lista de cadenas y luego, cuando haya terminado su uso strings.ToArray() para obtener la matriz de cadenas para trabajar?
Como han mencionado otros, puede utilizar un List<String>
(que acepto sería una mejor opción). En el caso de que tenga la String[]
(para pasar a un método existente que lo requiera, por ejemplo) siempre se puede recuperar una matriz de la lista (que es una copia de la matriz interior List<T>'s
) así:
String[] s = yourListOfString.ToArray();
Si va más adelante conocer la longitud de la matriz se puede crear la matriz inicial de la siguiente manera:
String[] array;
Y más tarde cuando se conoce la longitud se puede finalizar la inicialización como este
array = new String[42];
No tiene que especificar el tamaño de una matriz cuando crea una instancia.
Aún puede declarar la matriz y crear una instancia más adelante. Por ejemplo:
string[] myArray;
...
myArray = new string[size];
string foo = "Apple, Plum, Cherry";
cadena [] myArr = null;
myArr = foo.División(',');
¡No es bueno convertir una cadena como esta! Esto no es asi NET split (Char()) se supone que debe hacer! ¿Qué pasa si la entrada proviene de un usuario? Deberías verificar primero para "," ?? ¡Y si has codificado una cadena, entonces sabes el tamaño de todos modos! :) – sv88erik
Si desea utilizar matriz sin conocer el tamaño primero hay que declararlo y más tarde se puede crear una instancia de ella como
string[] myArray;
...
...
myArray=new string[someItems.count];
¿Has visto que esto tiene una respuesta? Y cuando esto fue creado? Si intentas obtener puntos, te aconsejo que busques nuevos artículos – sv88erik
puede declarar una matriz vacía, como a continuación
String[] arr = new String[]{}; // declare an empty array
String[] arr2 = {"A", "B"}; // declare and assign values to an array
arr = arr2; // assign valued array to empty array
se no puede asignar valores a la matriz vacía anterior como se muestra a continuación
arr[0] = "A"; // you can't do this
posible duplicado de [Cómo agregar una cadena a una cadena \ [\] matriz? No hay función .Add] (http://stackoverflow.com/questions/1440265/how-to-add-a-string-to-a-string-array-theres-no-add-function) – Antonio