string number = txtNumber.Text;
foreach (Account ac in tabAccounts)
{
if (txtNumber.Text == ac.Number)
{
this.Height = 328;
lblWelcome.Text = "Welcome: " + ac.Client;
break;
}
else
{
MessageBox.Show("Account Number not found");
}
}
Run Code Online (Sandbox Code Playgroud)
大家好,我在这里和C#相当新.所以我有一个带有客户信息的类账户存储在一个文本文件中.我想遍历数组tabAccounts [200]并查看输入的用户号是否与文本文件中的用户号相对应.它工作正常,但当我输入时说222它开始从乞讨循环直到它找到数字,如果它没有它只是保持循环和消息"帐号未找到"不断出来.当我删除else语句它工作正常,但我希望它当用户输入错误的数字时,一个消息框将显示...希望你们得到它:(尝试使用谷歌搜索,但没有找到任何东西..
使用LINQ可以更有效地完成这项工作:
var account = tabAccounts.SingleOrDefault(a => a.Number == txtNumber.Text);
if(account != null)
{
this.Height = 328;
lblWelcome.Text = "Welcome: " + account.Client;
}
else
{
MessageBox.Show("Account Number not found");
}
Run Code Online (Sandbox Code Playgroud)
对于您的原始代码:问题是您每次循环没有找到任何内容时都会在循环内显示消息.这是一个接近原始语法的重写,只是为了告诉你如何做到这一点:
Account foundAccount = null;
foreach (Account ac in tabAccounts)
{
if (txtNumber.Text == ac.Number)
{
foundAccount = ac;
break;
}
}
if(foundAccount != null)
{
this.Height = 328;
lblWelcome.Text = "Welcome: " + foundAccount.Client;
}
else
{
MessageBox.Show("Account Number not found");
}
Run Code Online (Sandbox Code Playgroud)