📄 ch5_1.cs
字号:
using System;
public class Account
{
private string Name;
private string Address;
private double Balance;
public Account( string n, string a )
{
Name = n;
Address = a;
Balance = 0.0;
}
public void AddToBalance( double amount )
{
Balance += amount;
}
public void RemoveFromBalance( double amount )
{
Balance -= amount;
}
public string getName()
{
return Name;
}
public string getAddress()
{
return Address;
}
public double getBalance()
{
return Balance;
}
}
public class AccountHandler
{
public AccountHandler()
{
}
public Boolean AccountInc( Account a, double amt )
{
a.AddToBalance( amt );
return true;
}
public Boolean AccountDec( Account a, double amt )
{
a.RemoveFromBalance( amt );
return true;
}
}
public class AccountDB
{
Account[] accounts;
int nNumAccounts;
// Declare delegates
public delegate Boolean IncrementAccountDelegate( Account a, double d );
public delegate Boolean DecrementAccountDelegate( Account a, double d );
public AccountDB()
{
accounts = new Account[10];
nNumAccounts = 0;
}
// A method to create a new account
public void AddAccount( string n, string a )
{
accounts[nNumAccounts++] = new Account(n,a);
}
public void PostToAccount( int nAcct, double d,
IncrementAccountDelegate inc,
DecrementAccountDelegate dec )
{
if ( d < 0 )
dec( accounts[nAcct], -d );
else
inc( accounts[nAcct], d );
}
public void PrintAccountStatus()
{
for ( int i=0; i<nNumAccounts; ++i )
{
Console.WriteLine( "Name {0} Address {1} Balance {2}",
accounts[i].getName(), accounts[i].getAddress(),
accounts[i].getBalance() );
}
}
}
class CH5_1
{
public static void Main()
{
AccountHandler ah = new AccountHandler();
AccountDB adb = new AccountDB();
// Add two accounts
adb.AddAccount("Fred Jones", "1000 Main St" );
adb.AddAccount("Ralph Smith", "1234 Pine St" );
// Create the delegates
AccountDB.IncrementAccountDelegate iad =
new AccountDB.IncrementAccountDelegate( ah.AccountInc );
AccountDB.DecrementAccountDelegate dad =
new AccountDB.DecrementAccountDelegate( ah.AccountDec );
// Okay, add some stuff and decrement it
adb.PostToAccount( 0, 100.00, iad, dad );
adb.PostToAccount( 0, 200.00, iad, dad );
adb.PostToAccount( 0, -50.00, iad, dad );
adb.PostToAccount( 1, 500.00, iad, dad );
adb.PostToAccount( 1, 300.00, iad, dad );
adb.PostToAccount( 1, -150.00, iad, dad );
// Print out the totals
adb.PrintAccountStatus();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -