Je n'arrive pas à comprendre pourquoi j'obtiens une erreur sur le flag. Toute aide serait appréciée! l'objectif est de générer un caractère de 40 en utilisant les caractères spécifiés ci-dessous.Utilisation de la variable locale non affectée 'flag'
public static string udidGen() {
bool flag;
string s1 = "";
string[] sArr2 = new string[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"a",
"b",
"c",
"d",
"e",
"f" };
string[] sArr1 = sArr2;
Random random = new Random();
int i = 0;
while (**flag**)
{
s1 += sArr1[random.Next(0, 15)];
i++;
flag = i < 40;
}
return s1;
}
Mis à part les questions de style de codage (ajout d'une chaîne, boucle claire, la copie de tableau inutile, etc.), il y a une autre chose qui est cassé ici - pour random.Next, le 2ème argument doit être 16, pas 15. random.Next (0, 16) vous donnera un nombre aléatoire entre 0 et 15 (ne me demandez pas pourquoi ils l'ont fait de cette façon). –
En outre, votre variable aléatoire doit être déclarée comme un champ statique et instanciée une seule fois (ou instanciée avec une graine différente à chaque fois). Cela garantira que chaque fois qu'il appelle "Suivant" il vous donnera quelque chose de aléatoire, et pas les mêmes valeurs à chaque fois. Pour démontrer, essayez de faire cet appel 10 fois de suite - vous obtiendrez probablement le même résultat plusieurs fois de suite. –