检测到c#不可达代码

本文关键字:代码 检测 | 更新日期: 2023-09-27 18:17:02

我已经瞎折腾了一个多小时了。我仍然不知道如何解决它,即使阅读Stackoverflow解决方案。该程序使用第一个用户名和密码(test &密码),当我输入第二个用户名和密码(aaa &它不管用。

public partial class Form2 : Form
{
    String[] username = { "test", "aaa" };
    String[] password = { "password", "123" };
private void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            for (int i = 0; i < username.Length; i++) // <------- Unreachable Code
            {
                if ((txtUsername.Text.Trim() == username[i]) && (txtPassword.Text.Trim() == password[i]))
                {
                    MessageBox.Show("Login Successful. Welcome!", "Login Success", MessageBoxButtons.OK, MessageBoxIcon.None);
                    Form3 frm3 = new Form3();
                    frm3.Visible = true;
                    frm3.Activate();
                    break;
                }
                else
                {
                    MessageBox.Show("You have entered an invalid input. Do you want to try again?", "Invalid Input", MessageBoxButtons.YesNo, MessageBoxIcon.Hand); break;
                }
            }
        }
        catch(Exception x)
        {
            MessageBox.Show("System Error! Please try again!", "System Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
        }
    }
}

检测到c#不可达代码

在两个if-else分支中都有break字。从else中移除break。但是你会在每个循环中得到消息框。因此,您需要修改代码:将消息框移出循环。

您的代码中存在逻辑流控制问题。因此,您需要将MessageBox触发移出循环。

如果你修改你的代码来使用列表而不是数组,并包含一点LINQ,你可以完全摆脱循环,并且你可以从更少的嵌套中受益。

public partial class Form2 : Form
{
    List<string> username = new List<string>{ "test", "aaa" };
    List<string> password = new List<string>{ "password", "123" };
    private void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            if (txtUsername.Text.Length > 0 && txtPassword.Text.Length > 0 
                && username.Any(x => x == txtUsername.Text.Trim())
                && password.Any(x => x == txtPassword.Text.Trim()))
            {
                MessageBox.Show(
                    "Login Successful. Welcome!", 
                    "Login Success", MessageBoxButtons.OK, MessageBoxIcon.None);
                Form3 frm3 = new Form3();
                frm3.Visible = true;
                frm3.Activate();
            }
            else
            {
                MessageBox.Show(
                    "You have entered an invalid input. Do you want to try again?", 
                     "Invalid Input", 
                     MessageBoxButtons.YesNo, MessageBoxIcon.Hand);
            }
        }
        catch(Exception x)
        {
            MessageBox.Show(
                "System Error! Please try again!", "System Error", 
                MessageBoxButtons.OK, MessageBoxIcon.Hand);
        }
    }
}