[英]ForEach loop but using a generic list as a parameter
好吧,我已经制作了一个显示方法,它是一个列表,所以我试图让它显示它但没有成功,但我无法做到,因为它遇到了我无法理解的 CS1503 错误出去,我只是在获得有关此事/解决方案的一些指导之后。
我最终在manageAccounts.DispalyBasicInfo(item);
我还在学习 C#。
Class答:
public void DisplayBasicInfo(List<Account> lstAcc)
{
foreach (var item in lstAcc)
{
Account objAccTemp = item;
lblCustomerName.Text = objAccTemp.CustomerName;
lblCustomerNo.Text = objAccTemp.AccountID.ToString();
if (objAccTemp.AccountType != null)
{
lstAccounts.Items.Add(objAccTemp.AccountID + " " + objAccTemp.AccountType + " $" + objAccTemp.BankBalance);
}
}
}
Class乙:
private void btnManageAccount_Click(object sender, EventArgs e)
{
try
{
ManageAccounts manageAccounts = new ManageAccounts();
string strTemp = lstCustomers.SelectedItem.ToString();
foreach (var item in Controller.lstAccounts)
{
if (item.CustomerName == strTemp)
{
manageAccounts.DisplayBasicInfo(item);
}
}
manageAccounts.Show();
Close();
}
catch (Exception)
{
MessageBox.Show("Please select a customer or create one", "No Selection");
}
}
DisplayBasicInfo()
方法需要一个完整的列表:
public void DisplayBasicInfo(List<Account> lstAcc)
但是当你调用它时,你没有列表。 您只有一个帐户:
manageAccounts.DisplayBasicInfo(item);
此外,如果您确实将整个列表传递给方法,则只有最后一项会显示在屏幕上,因为循环会在每次迭代中覆盖相同的项目。
因此你可能想要这个:
public void DisplayBasicInfo(Account account)
{
lblCustomerName.Text = account.CustomerName;
lblCustomerNo.Text = account.AccountID.ToString();
if (account.AccountType != null)
{
lstAccounts.Items.Add($"{account.AccountID} {account.AccountType} {account.BankBalance:C2}";
}
}
最后,我不知道是谁在教您使用lst
或obj
之类的前缀,但不再推荐这样做。 这在过去是有道理的,但现在工具已经改进了。 即使是创建这种做法的微软,现在也专门发布了风格指南,要求人们不要使用这种表示法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.