当前位置: 首页 > 编程语言 > C#

变量在当前上下文中不存在?分享

时间:2023-04-11 02:14:17 C#

变量在当前上下文中不存在?我知道这很可能是一个愚蠢的问题,但我是一名刚接触C#和面向对象编程的大学生。我试图在别处找到答案,但找不到任何有效的方法。调试器一直告诉我变量“cust_num在当前上下文中不存在”。如果有人能告诉我我做错了什么并让我觉得自己像个白痴,我将非常感激。谢谢!stringget_cust_num(){boolcust_num_valid=false;while(!cust_num_valid){cust_num_valid=true;Console.Write("请输入客户编号:");字符串cust_num=Console.ReadLine();如果(cust_num=="000000"||!Regex.IsMatch(cust_num,@"^[0-9]+$")||cust_num.Length!=6){cust_num_valid=false;Console.WriteLine("检测到无效客户编号。客户编号必须是6位正整数(0无效)");}}返回cust_num;}C#中的每个变量都存在于由花括号定义的范围内:{...intx=0;...x=x+1;//在你的例子中,cust_num受while{...}的限制。如果cust_num_valid=true并且根本没有cust_num,它必须考虑代码应该返回什么值。while(!cust_num_valid){//修正你的代码putstringcust_num="";外部:字符串cust_num=“”;//在外部定义while:stringcust_num=null;while...thensetinside它是这样的:cust_num=Console.ReadLine();因为您稍后会尝试访问它:returncust_num;您的returncust_num语句在returncust_numcust_num的定义上下文中。由于您在while循环中定义了它,因此它仅存在于该范围内。您需要将其移出循环。您定义的任何局部变量仅存在于将它括起来的大括号内(以及任何嵌套的大括号内)。您正试图在定义它的while块的范围之外返回cust_num。如果要返回,需要在while之外定义,eg:stringget_cust_num(){boolcust_num_valid=false;stringcust_num=string.Empty;while(!cust_num_valid){cust_num_valid=true;Console.Write("请输入客户编号:");cust_num=Console.ReadLine();如果(cust_num=="000000"||!Regex.IsMatch(cust_num,@"^[0-9]+$")||cust_num.Length!=6){cust_num_valid=false;Console.WriteLine("检测到无效客户编号。客户编号必须是6位正整数(0无效)");}}返回cust_num;在代码块中定义变量时,它被限制在该范围内(当然是从变量声明开始;在声明之前不能使用)。如果您查看示例,变量在while块内定义,但在其外部使用。stringget_cust_num(){while(){stringcust_num=Console.ReadLine();//cust_num范围从这里开始if(){}}//cust_num范围在这里结束returncust_num;您需要在方法级别定义它才能使用它:stringget_cust_num(){stringcust_num=Console.ReadLine();//cust_num作用域从这里开始while(){if(){}}returncust_num;}//cust_numscopeendshere你似乎试图返回cust_num的值。为了返回cust_num的值,需要在while循环外在与“return”语句出现的位置相同的级别上声明它。更多信息见此链接:http://msdn.microsoft.com/en-us/library/ms973875.aspx以上为C#学习教程:变量在当前上下文中不存在?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: