Exception lors de l'utilisation de la Chaîne.Format “(Indice de base zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste d'arguments.”

J'ai un tableau

ArrayList array = new ArrayList();
array.Add("a");
array.Add("b");
array.Add("c");

et j'ai une variable de chaîne refFormat qui a le même format que ci-dessous.

string refFormat = "{2} {0}";

Je vais essayer d'obtenir une chaîne de valeurs du tableau avec ce format. Ci-dessous est ce que j'ai écrit.

string newStr = String.Format(refFormat,array.ToArray());

Je suis l'exception suivante quand je suis en train de le faire.

Indice (base zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste d'arguments.

Je sais que cette question sons répétés, mais mon doute est de savoir comment choisir les valeurs du tableau dont les indices sont ceux spécifiés dans le format que 2 et 0. S'il vous plaît aider..

Modifier: Salut, désolé pour la mise en place de la mauvaise question. Je suis à l'aide d'une liste de tableaux au lieu d'un tableau de chaîne, je vais essayer la même chose. Je suis encore en train de l'exception, en dépit de la conversion d'un tableau à l'aide de ToArray(). Où vais-je tort? Et aussi je ne peut pas utiliser de Liste au lieu de la liste de tableaux ici depuis le tableau contient des données de type différent. Merci de m'aider..

  • Êtes-vous sûr que vous obtenez cette exception sur string newStr = String.Format(refFormat,array); ligne? Il ne faut pas jeter tout excetion basé sur votre code et newStr sera c a.
  • J'ai juste essayé de reproduire cette erreur, mais mon code a fonctionné. J'ai utilisé exactement le même que le code de votre question, je n'ai fait aucune modification.
  • Pour référence, string a la méthode suivante disponibles public static string Format(string format, params object[] args). La question est donc à l'aide d'une méthode valide c'est à dire le passage d'un tableau comme le 2e paramètre.
  • Eh bien, ce code fonctionne très bien: dotnetfiddle.net/sQUxiu
  • Je veux qu'il soit c et a. C'est là où il est défaillant.
  • Ne connaissais pas dotNetFiddle. Ressemble à une grande ressource.
  • En fait, j'ai utilisé ArrayList au lieu de string[]. Peut-être que la raison whyy il est défectueux?
  • bien sûr c'est la raison. ArrayList tombe dans une autre surcharge, Format(string, object) je crois. C'est aussi la raison pourquoi tout le monde est conseillé de mettre le code réel sur la question
  • Pourquoi utiliser ArrayList? Si vous insistez, vous pouvez copier le ArrayList à un nouveau tableau avec .ToArray() méthode d'instance.
  • Cela fonctionne parfaitement. Peut-être que vous supprimez un élément de la ArrayList avant d'utiliser String.Format()... donc, ma suggestion est de vérifier la taille (par exemple,if(array.Count >= 3){...}) avant d'utiliser String.Format().

InformationsquelleAutor Akshatha | 2014-12-31