我有一个包含帐户的列表,我正在尝试创建一个函数,该函数接受参数名称并遍历该列表,并返回与名称参数传递的名称相同的第一个帐户。
如果存在一个具有匹配名称的帐户,则返回银行,否则返回null。
public class Account {
// Defining some private variables...
private decimal _balance;
private string _name;
public string Name{
get { return _name; }
}
public Account(string name, decimal startingBalance){
_name = name;
_balance = startingBalance;
}
}
public class Bank {
private static List<Account> _accounts = new List<Account>();
public Bank(){ }
public void AddAccount(Account account){
_accounts.Add(account);
}
// method to check if an account exist in list of accounts..
public Account GetAccount(string name){
Account account;
for (int i = 0; i < _accounts.Count; i++){
if (name == _accounts[i].Name){
account = _accounts[i];
return account;
}
}
if (String.IsNullOrEmpty(Convert.ToString(account)))
{
return null;
}
}
}
这是我的想法,但显示错误。 1.并非所有代码路径都返回该值。 2.使用未分配的本地变量“帐户”。
请帮助您编写GetAccount代码?
答案 0 :(得分:0)
如果程序到达那里,则无需在循环后检查account变量,它肯定找不到该账户。这也解决了“并非所有代码路径都返回值”的问题。另外,您可以不使用其他变量(帐户)就返回对象。
public Account GetAccount(string name){
for (int i = 0; i < _accounts.Count; i++){
if (name == _accounts[i].Name){
return _accounts[i];
}
}
return null;
}
顺便说一句,最好使用LINQ进行此类工作(如@Aomine所述):
public Account GetAccount(string name){
return _accounts.FirstOrDefault(a => a.Name == name);
}
答案 1 :(得分:0)
您收到的消息不是错误。他们是警告。
您可以在account
函数中返回GetAccount
。
public Account GetAccount(string name){
Account account = null;
for (int i = 0; i < _accounts.Count; i++){
if (name == _accounts[i].Name){
account = _accounts[i];
return account;
}
}
return account;
}