C# 如何使用在for循环中指定的值
我在循环外声明变量C# 如何使用在for循环中指定的值,c#,loops,C#,Loops,我在循环外声明变量setPassword,然后在循环内给它一个值。然后在下一个do while循环中,我尝试使用分配的值,但它表示“使用未分配的局部变量”。 profile[I]是在循环之前创建的对象数组。循环中分配的值是否未保存,或者profile[I].Password的值是否为null,因为对象尚未创建 bool good = false; string username; do { bool broke = false; Console.WriteLine("Pleas
setPassword
,然后在循环内给它一个值。然后在下一个do while循环中,我尝试使用分配的值,但它表示“使用未分配的局部变量”。profile[I]
是在循环之前创建的对象数组。循环中分配的值是否未保存,或者profile[I].Password的值是否为null,因为对象尚未创建
bool good = false;
string username;
do
{
bool broke = false;
Console.WriteLine("Please create a username");
username = Console.ReadLine();
for (int i = 0; i < profile.Count; i++)
{
if (username == profile[i].Username)
{
Console.WriteLine("The username already exists");
broke = true;
break;
}
}
if (broke == false)
{
good = true;
}
} while (good == false);
Console.WriteLine("Please create a password");
string password = Console.ReadLine();
profile.Add(new Users(username, password, 0));
string setPassword;
bool validUser = false;
do
{
Console.Clear();
Console.WriteLine("Enter your username");
string tryUsername = Console.ReadLine();
for (int i = 0; i < profile.Count; i++)
{
if (profile[i].Username == tryUsername)
{
setPassword = profile[i].Password;
validUser = true;
}
}
if (validUser == false)
{
Console.WriteLine("Invalid username. Usernames are case sensitive");
Thread.Sleep(2500);
}
} while (validUser == false);
bool validPass = false;
do
{
Console.WriteLine("Enter your password");
string tryPass = Console.ReadLine();
if (tryPass == setPassword) //this is the error
{
validPass = true;
}
else
{
Console.WriteLine("Invalid password. Passwords are case sensitive");
}
} while (validPass == false);
bool good=false;
字符串用户名;
做
{
布尔-布罗克=假;
Console.WriteLine(“请创建用户名”);
username=Console.ReadLine();
对于(int i=0;i
编译器无法知道它实际上会被赋值(如果不是所有的if
语句都计算为true
,编译器也无法知道)
指定一个默认值,您就可以:
string setPassword = null;
编译器无法知道它实际上会被赋值(如果不是所有的if
语句都被赋值为true
,编译器也无法知道)
指定一个默认值,您就可以:
string setPassword = null;
这是因为编译器无法知道您的for
-循环至少执行了一次,特别是循环中的if
-语句也至少传递了该循环的一次迭代。因此,至少从编译器的角度来看,setPassword
可能从未被赋值,因此您会得到该错误
在开始处分配null
:
string setPassword = null;
这是因为编译器无法知道您的for
-循环至少执行了一次,特别是循环中的if
-语句也至少传递了该循环的一次迭代。因此,至少从编译器的角度来看,setPassword
可能从未被赋值,因此您会得到该错误
在开始处分配null
:
string setPassword = null;
我在循环外初始化变量setPassword,然后在循环内给它一个值
这就是问题所在。系统无法保证在使用前已分配值
循环可能重复0次。
周围的if
语句的条件也可能计算为false
这两种情况都会导致setPassword
无法获取值
因此,编译器会给您一个错误,您可能在它有值之前使用了setPassword
解决方案是将其设置为循环外部和if
外部的默认值
我在循环外初始化变量setPassword,然后在循环内给它一个值
这就是问题所在。系统无法保证在使用前已分配值
循环可能重复0次。
周围的if
语句的条件也可能计算为false
这两种情况都会导致setPassword
无法获取值
因此,编译器会给您一个错误,您可能在它有值之前使用了setPassword
解决方案是在循环外部将其设置为默认值,在if
外部,基本上问题是:
您主要在if
语句中使用它们,if
语句使用变量。但是您只声明了变量,但从未在全局/本地定义过变量,这会自动给出一个错误,尽管该变量将在本地接受用户的输入,if
语句不幸太愚蠢,无法为您检测到这一点,而且用户也可能跳过提供输入的步骤。因此,您需要设置一个默认值。
如他们所述,您可以使用:
string setPassword=null代码>或字符串setPassword=“”代码>
[不必介意可空值,默认情况下字符串可以是null
)基本上问题是:
您主要在if
语句中使用它们,if
语句使用变量。但是您只声明了变量,但从未在全局/本地定义过变量,这会自动给出一个错误,尽管该变量将在本地接受用户的输入,if
语句不幸太愚蠢,无法为您检测到这一点,而且用户也可能跳过提供输入的步骤。因此,您需要设置一个默认值。
如他们所述,您可以使用:
string setPassword=null代码>或字符串设置过程