遍历列表并返回值时出现问题

时间:2019-04-14 11:17:54

标签: c#

我有一个包含帐户的列表,我正在尝试创建一个函数,该函数接受参数名称并遍历该列表,并返回与名称参数传递的名称相同的第一个帐户。

如果存在一个具有匹配名称的帐户,则返回银行,否则返回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代码?

2 个答案:

答案 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; 
  }