我正在创建一个静态标志页面使用列表保存数据。我使用一个ForEach循环遍历列表,但我面临的问题是,我希望我的for循环立即停止,条件为真。
注:我试过使用休息和回传,但他们没有像预期的那样工作。
守则如下:
List<User> users = new List<User>(3);
    public MainWindow()
    {
        InitializeComponent();
        User superAdmin = new User()
        {
            userType = "Super Admin",
            uniqueCode = "123456",
            password = "password1"
        };
        User admin = new User()
        {
            userType = "Admin",
            uniqueCode = "654321",
            password = "password16"
        };
        User userOperator = new User()
        {
            userType = "Operator",
            uniqueCode = "109105",
            password = "specialpassword"
        };
        users.Add(superAdmin);  
        users.Add(admin);
        users.Add(userOperator);
    }
    private void login_OnClick(object sender, RoutedEventArgs e)
    {
        string userType = cmbAdminType.Text;
        string uniqueCode = txtUniqueCode.Text;
        string password = txtPassword.Text;
        foreach (User userPick in users)
        {        
            if (userPick.userType == userType && userPick.uniqueCode == uniqueCode)
            {
                MessageBox.Show("Cool you are in!");
                break;
            }
            else
            {
                MessageBox.Show("Err, not found!");
                break;
            }
        }
    }
}
    public class User
    {
        public string userType { get; set; }
        public string uniqueCode { get; set; }
        public string password { get; set; }
    }拜托,我还能做什么?
发布于 2018-09-12 09:09:44
其他人已经指出了当前代码中的缺陷,但我建议在这里使用LINQ方法。它要短得多,而且易于阅读--至少当您习惯LINQ时:
bool validUser = users.Any(user => user.userType == userType && user.uniqueCode == uniqueCode);
MessageBox.Show(validUser ? "Cool you are in!" : "Err, not found!");Any是短路:一旦找到匹配,它就会停止.
顺便提一下,我强烈建议您开始遵循属性的.NET命名约定。
https://stackoverflow.com/questions/52291334
复制相似问题