La Variable n'existe pas dans le contexte actuel?
Je sais que c'est probablement une question stupide, mais je suis un étudiant de l'université nouvelle de C# et de la programmation orientée objet. J'ai essayé de trouver la réponse ailleurs, mais je n'étais pas capable de trouver quelque chose qui pourrait l'aider. Le debugger me dit que la variable "cust_num n'existe pas dans le contexte actuel". Si quelqu'un peut me dire ce que j'ai fait de mal et me faire sentir comme un idiot, je vous en serais très reconnaissante. Merci!
string get_cust_num()
{
bool cust_num_valid = false;
while (!cust_num_valid)
{
cust_num_valid = true;
Console.Write("Please enter customer number: ");
string cust_num = Console.ReadLine();
if (cust_num == "000000" || !Regex.IsMatch(cust_num, @"^[0-9]+$") || cust_num.Length != 6)
{
cust_num_valid = false;
Console.WriteLine("Invalid customer number detected. Customer numbers must be a 6 digit positive integer (zeros will not work)");
}
}
return cust_num;
}
Vous devez vous connecter pour publier un commentaire.
Chaque variable en C# au sein d'un portée qui est définie par accolades:
Dans votre cas,
cust_num
est limité parwhile {...}
. Il a qu'à penser à ce que la valeur de votre code de retour si cust_num_valid = true et il n'y a pascust_num à tous.
À la réparation de votre code mis
string cust_num = "";
à l'extérieur lawhile
:Le définir en dehors de la
while
:et puis à l'intérieur de la alors que de cette façon:
parce que vous essayez d'accéder après la tout:
string cust_num;
(sans définir= null
) en dehors de la boucle et de l'utilisation d'undo { } while()
boucle (étant donné que la boucle s'exécute toujours au moins une fois).Votre
return cust_num
déclaration est en dehors de la définition de contexte decust_num
. Depuis que vous avez défini à l'intérieur de votrewhile
boucle, il existe seulement dans le champ d'application. Vous avez besoin de le sortir de la boucle.Toute variable locale vous définissez il n'existe que dans les accolades que l'encapsuler (et dans toutes les parenthèses).
Que vous essayez de revenir
cust_num
en dehors de la portée de lawhile
bloc où elle est définie. Vous avez besoin de la définir à l'extérieur de l'tandis que si vous souhaitez renvoyer, par exemple:Lorsqu'une variable est définie dans un bloc de code, il est retenu que la portée (et de cours commence à la déclaration de la variable; vous ne pouvez pas l'utiliser avant qu'il est déclaré). Si vous regardez dans votre exemple, la variable est définie dans le tout en bloc, mais utilisé à l'extérieur.
Vous avez besoin de la définir au niveau de la méthode à utiliser :
Il semble que vous essayez de renvoyer la valeur de
cust_num
. Afin de retourner la valeur decust_num
, elle doit être déclarée en dehors de la boucle while au même niveau que lorsque le "return" se produit.Voir ce lien pour plus d'informations: http://msdn.microsoft.com/en-us/library/ms973875.aspx