2016-10-16 5 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

リスト()を含むクラスBankが必要です。または、BankAccountクラスにpublic static Listを追加します。 accounts = new List (); – jdweng

答えて

1

あなたは、リスト内の特定のオブジェクトを検索するためにLINQを使用することができます。その後、次の試してみてください、この

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

を使用する

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

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が返される可能性があります。したがって、行26を実行する前にnullをチェックしなければなりません。存在しないアカウントには入金できません。 – jdweng

+0

john(bname = john)という名前のアカウントを作成した後、john(bname = john)というアカウントを探しています。 Console.WriteLine(bank.GetAccounts()。Exists(x => x.name == bname)); falseを返します。 – Danga

関連する問題