⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch5_1.cs

📁 《c#技术内幕代码》
💻 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 + -