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 etnewStr
serac 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 disponiblespublic 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 leArrayList
à 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'utiliserString.Format()
... donc, ma suggestion est de vérifier la taille (par exemple,if(array.Count >= 3){...}
) avant d'utiliserString.Format()
.
Vous devez vous connecter pour publier un commentaire.
Pour référence, voici mon code de travail trop:
Je n'ai pas rencontré une erreur lors de l'exécution du code ci-dessus.
Vous ne vous donnez pas correctement les paramètres , il doit être indexé comme {0} {1} et donc ons