- 已加入
- 2020年3月31日
- 留言内容
- 21
- 编程经验
- Beginner
我正在学习c#,并从docs.microsoft.com跟随一个示例,链接如下
类和对象-C#教程简介
代码在下面
示例代码工作正常,但我有一个查询。在示例列表中<Transaction>allTransaction =新列表<Transaction>() has been created.
我想知道,不同客户进行的所有交易都将添加到一个"allTransaction"列表或每个客户都有自己的"allTransaction"列表?例如Client1.allTransaction,Client2.allTransaction .....
例如,在此示例中,我已经创建了两个客户端Client1和Client2。他们所有的交易都存储在哪里?
在程序的末尾有一个GetAccountHistory()函数,它显示客户端的历史记录。如何识别哪个客户的交易。
请指导我
谢谢
类和对象-C#教程简介
代码在下面
Main Program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace classes
{
class Program
{
static void Main(string[] args)
{
var Client1 = new BankAccounts("ABC", 1000);
var Client2 = new BankAccounts("XYZ", 500);
Console.WriteLine($"Account {Client1.Number} was created for {Client1.Owner} with {Client1.Balance} initial balance.");
Console.WriteLine($"Account {Client2.Number} was created for {Client2.Owner} with {Client2.Balance} initial balance.");
Console.WriteLine();
Client1.MakeWithdrawal(500, DateTime.Now, "Rent Payment");
Console.WriteLine(Client1.Balance);
Client1.MakeDeposit(100, DateTime.Now, "Friend paid me back");
Console.WriteLine(Client1.Balance);
Console.WriteLine();
Client2.MakeWithdrawal(500, DateTime.Now, "Fuel Charges");
Console.WriteLine(Client2.Balance);
Client2.MakeDeposit(100, DateTime.Now, "Bonus");
Console.WriteLine(Client2.Balance);
Console.WriteLine(Client1.GetAccountHistory());
Console.WriteLine();
Console.WriteLine(Client2.GetAccountHistory());
Console.ReadLine();
}
}
}
BankAccount Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace classes
{
class BankAccounts
{
private static int accountNumberSeed = 1234567890;
public string Number { get; }
public string Owner { get; set; }
public decimal Balance
{
get
{
decimal balance = 0;
foreach(var item in allTransactions)
{
balance += item.Amount;
}
return balance;
}
}
public List<Transaction> allTransactions = new List<Transaction>();
public BankAccounts(string name, decimal initialBalance)
{
Number = accountNumberSeed.ToString();
accountNumberSeed++;
Owner = name;
MakeDeposit(initialBalance, DateTime.Now, "Initial Balance");
}
public void MakeDeposit(decimal amount, DateTime date, string note)
{
if(amount < 0)
{
throw new ArgumentOutOfRangeException(nameof(amount), "Amount of deposit must be positive");
}
var deposit = new Transaction(amount, date, note);
allTransactions.Add(deposit);
}
public void MakeWithdrawal(decimal amount, DateTime date, string note)
{
if(amount <=0)
{
throw new ArgumentOutOfRangeException(nameof(amount), "Amount of withdrawal must be positive");
}
if(Balance - amount < 0)
{
throw new InvalidOperationException("Not sufficient funds for this withdrawal");
}
var withdrawal = new Transaction(-amount, date, note);
allTransactions.Add(withdrawal);
}
public string GetAccountHistory()
{
var report = new System.Text.StringBuilder();
decimal balance = 0;
report.AppendLine("Date\t\tBalance\tNote");
foreach(var item in allTransactions)
{
balance += item.Amount;
report.AppendLine($"{item.Date.ToShortDateString()}\t{balance}\t{item.Notes}");
}
return report.ToString();
}
}
}
Transaction Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace classes
{
public class Transaction
{
public decimal Amount { get; }
public DateTime Date { get; }
public string Notes { get; }
public Transaction(decimal amount, DateTime date, string note)
{
Amount = amount;
Date = date;
Notes = note;
}
}
}
示例代码工作正常,但我有一个查询。在示例列表中<Transaction>allTransaction =新列表<Transaction>() has been created.
我想知道,不同客户进行的所有交易都将添加到一个"allTransaction"列表或每个客户都有自己的"allTransaction"列表?例如Client1.allTransaction,Client2.allTransaction .....
例如,在此示例中,我已经创建了两个客户端Client1和Client2。他们所有的交易都存储在哪里?
在程序的末尾有一个GetAccountHistory()函数,它显示客户端的历史记录。如何识别哪个客户的交易。
请指导我
谢谢