2010-05-13 15 views
2

J'ai un tableau:Ajout d'un tableau

String[] ay = { 
    "blah", 
    "blah number 2" 
    "etc" }; 

... Mais maintenant, je veux ajouter à ce tableau à un moment plus tard, mais je ne vois aucune possibilité de le faire. Comment cela peut-il être fait? Je continue à recevoir un message disant que la chaîne ne peut pas être convertie en chaîne [].

Merci

Répondre

2

Les tableaux ne peuvent pas changer leur taille après qu'ils soient déclarés. Utilisez des collections à la place. Par exemple: List.

6

Utilisez une liste plutôt qu'un tableau:

List<string> list = new List<string>(); 
list.Add("blah") ; 

Puis, plus tard, si vous avez vraiment besoin comme un tableau:

string[] ay = list.ToArray(); 
3

Les tableaux sont de taille fixe, donc après qu'il a été créé, vous ne pouvez pas changer la taille de celui-ci (sans créer un nouvel objet tableau)

Utilisez le List<string> au lieu du tableau.

0

Comme tout le monde l'a déjà dit, utilisez List dans l'espace de noms System.Collections.Generic. Vous pouvez également utiliser une table de hachage qui vous permettra de donner une signification à chaque chaîne, ou "clé" qui vous donne un moyen facile de retirer une chaîne avec un mot-clé. (Pour conserver les messages stockés dans l'espace mémoire à quelque fin que ce soit.) Vous pouvez également Créer un nouveau tableau à chaque fois que vous ajoutez une valeur, agrandissez le nouveau tableau 1 et copiez toutes les données du premier tableau dans le tableau. 2ème tableau, puis ajoutez votre nouvelle valeur dans le dernier emplacement (Longueur - 1) Ensuite, remplacez l'ancien tableau par votre nouveau. C'est la manière la plus manuelle de le faire. Mais List et Hashtable fonctionnent parfaitement bien aussi.

0

Si vous n'avez pas besoin d'indexer un élément de tableau spécifique (utilisation de parenthèses), mais que vous voulez pouvoir ajouter ou supprimer efficacement des éléments, vous pouvez utiliser LinkedList.

0

Si vous avez besoin d'indexation jeter un oeil à type de données Dictionnaire aussi dans le System.Collection

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

pour que vous puissiez faire quelque chose comme

 Dictionary<int, string> dictionary = new Dictionary<int, string>(); 
     dictionary.Add(1, "afljsd"); 
0

est ici une méthode d'extension ajoutez les tableaux ensemble et créez un nouveau tableau de chaînes

public static class StringArrayExtension 
{ 
    public static string[] GetStringArray (this string[] currentArray, string[] arrayToAdd) 
    { 
     List<String> list = new List<String>(currentArray); 

     list.AddRange(arrayToAdd); 


     return list.ToArray(); 
    } 
} 
0

Vous pouvez le faire, mais je ne le recommande pas:

// Reallocates an array with a new size, and copies the contents 
// of the old array to the new array. 
// Arguments: 
// oldArray the old array, to be reallocated. 
// newSize the new array size. 
// Returns  A new array with the same contents. 
public static System.Array ResizeArray (System.Array oldArray, int newSize) { 
    int oldSize = oldArray.Length; 
    System.Type elementType = oldArray.GetType().GetElementType(); 
    System.Array newArray = System.Array.CreateInstance(elementType,newSize); 
    int preserveLength = System.Math.Min(oldSize,newSize); 
    if (preserveLength > 0) 
     System.Array.Copy (oldArray,newArray,preserveLength); 
    return newArray; 

}

+0

System.Array a déjà une méthode statique Redimensionner. –

Questions connexes