reeks string met onbekende grootte

Hoe is een array van string waarvan je niet weet waar de arraygrootte is in c#.NET?

String[] array = new String[]; // this does not work

Antwoord 1, autoriteit 100%

Is er een specifieke reden waarom u een array moet gebruiken? Als je de maat niet van tevoren weet, kun je List<String>

gebruiken

List<String> list = new List<String>();
list.Add("Hello");
list.Add("world");
list.Add("!");
Console.WriteLine(list[2]);

Geeft u een output van

!

MSDN – List(T)voor meer informatie


Antwoord 2, autoriteit 28%

U hoeft de grootte van een array niet op te geven wanneer u deze start.

Je kunt de array nog steeds declareren en later instantiëren. Bijvoorbeeld:

string[] myArray;
...
myArray = new string[size];

Antwoord 3, autoriteit 10%

Je kunt geen array maken zonder een grootte. Daar heb je een lijst voor nodig.


Antwoord 4, autoriteit 7%

Zoals anderen al hebben gezegd, kunt u een List<String>gebruiken (wat volgens mij een betere keuze zou zijn). In het geval dat u de String[]nodig heeft (om bijvoorbeeld door te geven aan een bestaande methode die dit vereist), kunt u altijd een array ophalen uit de lijst (die een kopie is van de List<T>'sbinnenste array) als volgt:

String[] s = yourListOfString.ToArray();

Antwoord 5, autoriteit 7%

u kunt een lege array declareren zoals hieronder

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

u kunt geen waarden toewijzen aan de bovenstaande lege array zoals hieronder

arr[0] = "A"; // you can't do this

Antwoord 6

Ik denk dat je op zoek bent naar de StringBuilderklas. Zo niet, dan is de generieke List-klasse in tekenreeksvorm:

List<string> myStringList = new List<string();
myStringList.Add("Test 1");
myStringList.Add("Test 2");

Of, als u er absoluut zeker van moet zijn dat de snaren in orde blijven:

Queue<string> myStringInOriginalOrder = new Queue<string();
myStringInOriginalOrder.Enqueue("Testing...");
myStringInOriginalOrder.Enqueue("1...");
myStringInOriginalOrder.Enqueue("2...");
myStringInOriginalOrder.Enqueue("3...");

Houd er rekening mee dat bij de klasse List de volgorde van de items een implementatiedetail is en dat je niet zeker weet dat ze in dezelfde volgorde blijven als waarin je ze hebt geplaatst.


Antwoord 7

Ik veronderstel dat de arraygrootte een berekende waarde is.

int size = ComputeArraySize();
// Then
String[] array = new String[size]; 

Antwoord 8

Kun je een List-string gebruiken en als je klaar bent, strings.ToArray() gebruiken om de array met strings te laten werken?


Antwoord 9

Als u later de lengte van de array weet, kunt u de initiële array als volgt maken:

String[] array;

En later, als je de lengte weet, kun je de initialisatie zo afronden

array = new String[42];

Antwoord 10

Als u array wilt gebruiken zonder de grootte te kennen, moet u deze eerst declareren en later kunt u deze instantiëren zoals

string[] myArray;
...
...
myArray=new string[someItems.count];

Antwoord 11

string[ ] array = {};

// het is niet null maar is leeg.


Antwoord 12

string foo = “Apple, Plum, Cherry”;

string[] myArr = null;

myArr = foo.Split(‘,’);

Other episodes