2016-10-16 3 views
0

В настоящее время я изучаю C#, и я пытаюсь создать скрипт, который создает банковский счет, а затем найдет его и добавит на него деньги.Создание объекта с именем, заданным пользователем.

Этот метод используется для создания новой учетной записи:

static void CreateNewAccount() 
    { 
     Console.WriteLine("Enter a name for a new account."); 
     string bname = Console.ReadLine(); 
     Console.WriteLine("Creating a new account for : {0}", bname); 
     List<BankAccount> account = new List<BankAccount>() // not sure about it 
     { 
      new BankAccount { name = bname } // creating a new account 
    }; 

     Console.WriteLine(account.Exists(x => x.name == bname)); 
     var useraccount = account.Find(x => x.name == bname); // Trying to find the account that i've created earlier 
     useraccount.Deposit(100); // trying to add money on it 
     useraccount.CheckBalance(); 
     Console.WriteLine("test"); 

    } 

А вот мой класс:

class BankAccount 
{ 
    private double _balance=0; 
    public string name; 
    public BankAccount() 
    { 
     Console.WriteLine("You succesfuly created a new account."); 
    } 
    public double CheckBalance() 
    { 
     return _balance; 
    } 
    public void Deposit(double n) 
    { 
     _balance += n; 
    } 
    public void WithDraw(double n) 
    { 
     _balance -= n; 
    } 
} 

Я не уверен, что вообще о том, как использовать список и как использовать Найти. Я извинился за это, потому что нашел его на аналогичном скрипте.

Знаете ли вы простой способ сделать это? Я новичок.

Благодаря

+0

объект добавляется к списку парней !! Этот код является правильным синтаксисом, но что вы хотите делать и что с ним не так? – Emad

+0

Вам не нужен список, чтобы сделать так, почему вы используете список? Все, что вам нужно сделать, это создать единый объект банковского счета класса. Вы можете использовать цикл for вместо списка, если вы делаете это для многих банковских счетов. Каково ваше приложение в любом случае? Зачем нужно использовать списки? –

+0

Вам нужен класс Банк, который содержит Список (). Или добавить к классу BankAccount открытый статический список accounts = new Список (); – jdweng

ответ

1

Вы можете использовать LINQ, чтобы найти определенный объект в списке.

var query = account.Where(a => a.name == "A NAME"); 

Затем использовать этот

foreach(var account in query.ToList()) 
{ 
    //do work 
} 
0

Попробуйте следующее:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 


namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 



     } 
     static void CreateNewAccount() 
     { 
      Bank bank = new Bank(); 
      Console.WriteLine("Enter a name for a new account."); 
      string bname = Console.ReadLine(); 
      Console.WriteLine("Creating a new account for : {0}", bname); 
      BankAccount account = new BankAccount(bname, 0); 

      Console.WriteLine(bank.GetAccounts().Exists(x => x.name == bname)); 
      var useraccount = bank.GetAccount(bname); // Trying to find the account that i've created earlier 
      useraccount.Deposit(100); // trying to add money on it 
      useraccount.CheckBalance(); 
      Console.WriteLine("test"); 

     } 
    } 
    class Bank 
    { 
     private List<BankAccount> accounts = new List<BankAccount>(); 
     public List<BankAccount> GetAccounts() 
     { 
      return accounts; 
     } 
     public BankAccount GetAccount(string name) 
     { 
      return accounts.Where(x => x.name == name).FirstOrDefault(); 
     } 
    } 
    class BankAccount 
    { 
     private double _balance = 0; 
     public string name; 
     public BankAccount(string name, double balance) 
     { 
      this.name = name; 
      this._balance = balance; 
      Console.WriteLine("You succesfuly created a new account."); 
     } 
     public double CheckBalance() 
     { 
      return _balance; 
     } 
     public void Deposit(double n) 
     { 
      _balance += n; 
     } 
     public void WithDraw(double n) 
     { 
      _balance -= n; 
     } 
    } 
} 
+0

Спасибо! Это похоже на то, что я пытался сделать сейчас! Я взял ваш код, но у меня есть исключение System.NullReferenceException в строке 26 (строка useraccount.Deposit (100);), я попытаюсь исправить это. Еще раз спасибо. – Danga

+0

Учетная запись может вернуть null, если учетная запись не существует. Таким образом, вы должны проверить значение null до выполнения строки 26. Вы не можете вносить деньги в счет, который не существует. – jdweng

+0

Если я создаю учетную запись с именем john (bname = john), а затем я ищу учетную запись с именем john (bname = john) Console.WriteLine (bank.GetAccounts(). Exists (x => x.name ==) BNAME)); Он возвращает false. – Danga