Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用在for循环中指定的值_C#_Loops - Fatal编程技术网

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
字符串设置过程