An instance method works with the fields of one object.

instance method An instance method is called on an object and can use that object's state.

Instance Methods

deposit
InstanceMethods.cs
Replay: real traced execution (multi-file project)
using System;

class BankAccount
{
    public int Balance;

    public BankAccount(int balance)
    {
        Balance = balance;
    }

    public void Deposit(int amount)
    {
        Balance += amount;
    }
}

class Program
{
    static void Main()
    {
        int deposit = 5;
        BankAccount account = new BankAccount(10);
        account.Deposit(deposit);

        Console.WriteLine($"deposit={deposit}");
        Console.WriteLine($"balance={account.Balance}");
    }
}
using System;

class BankAccount
{
    public int Balance;

    public BankAccount(int balance)
    {
        Balance = balance;
    }

    public void Deposit(int amount)
    {
        Balance += amount;
    }
}

class Program
{
    static void Main()
    {
        int deposit = 0;
        BankAccount account = new BankAccount(10);
        account.Deposit(deposit);

        Console.WriteLine($"deposit={deposit}");
        Console.WriteLine($"balance={account.Balance}");
    }
}
using System;

class BankAccount
{
    public int Balance;

    public BankAccount(int balance)
    {
        Balance = balance;
    }

    public void Deposit(int amount)
    {
        Balance += amount;
    }
}

class Program
{
    static void Main()
    {
        int deposit = 12;
        BankAccount account = new BankAccount(10);
        account.Deposit(deposit);

        Console.WriteLine($"deposit={deposit}");
        Console.WriteLine($"balance={account.Balance}");
    }
}
  1. deposit ← 5

    19{20    static void Main()21    {22        int deposit→ 5 = 5; //@deposit=0, 1223        BankAccount account = new BankAccount(10);24        account.Deposit(deposit);
  2. public BankAccount(int balance)

    7public BankAccount(int balance10)8{9    Balance = balance10;10}
  3. account ← BankAccount

    22int deposit = 5; //@deposit=0, 1223BankAccount account→ BankAccount = new BankAccount(10);24accountBankAccount.Deposit(deposit5);
  4. public void Deposit(int amount)

    12public void Deposit(int amount5)13{14    Balance += amount5;15}
  5. account.Deposit(deposit);

    23    BankAccount account = new BankAccount(10);24    accountBankAccount.Deposit(deposit5);2526    Console.WriteLine($"deposit={deposit5}");27    Console.WriteLine($"balance={account.Balance15}");28}
    outputdeposit=5
    balance=15
  1. deposit ← 0

    19{20    static void Main()21    {22        int deposit→ 0 = 0;23        BankAccount account = new BankAccount(10);24        account.Deposit(deposit);
  2. public BankAccount(int balance)

    7public BankAccount(int balance10)8{9    Balance = balance10;10}
  3. account ← BankAccount

    22int deposit = 0;23BankAccount account→ BankAccount = new BankAccount(10);24accountBankAccount.Deposit(deposit0);
  4. public void Deposit(int amount)

    12public void Deposit(int amount0)13{14    Balance += amount0;15}
  5. account.Deposit(deposit);

    23    BankAccount account = new BankAccount(10);24    accountBankAccount.Deposit(deposit0);2526    Console.WriteLine($"deposit={deposit0}");27    Console.WriteLine($"balance={account.Balance10}");28}
    outputdeposit=0
    balance=10
  1. deposit ← 12

    19{20    static void Main()21    {22        int deposit→ 12 = 12;23        BankAccount account = new BankAccount(10);24        account.Deposit(deposit);
  2. public BankAccount(int balance)

    7public BankAccount(int balance10)8{9    Balance = balance10;10}
  3. account ← BankAccount

    22int deposit = 12;23BankAccount account→ BankAccount = new BankAccount(10);24accountBankAccount.Deposit(deposit12);
  4. public void Deposit(int amount)

    12public void Deposit(int amount12)13{14    Balance += amount12;15}
  5. account.Deposit(deposit);

    23    BankAccount account = new BankAccount(10);24    accountBankAccount.Deposit(deposit12);2526    Console.WriteLine($"deposit={deposit12}");27    Console.WriteLine($"balance={account.Balance22}");28}
    outputdeposit=12
    balance=22

Follow the Method

  1. deposit starts as 5.
  2. new BankAccount(10) creates an account with balance 10.
  3. account.Deposit(deposit) calls the method on that account.
  4. The method adds 5 to the account balance.
  5. The program prints deposit=5 and balance=15. | starting balance | deposit | final balance | | --- | --- | --- | | 10 | 5 | 15 | | 10 | 0 | 10 | | 10 | 12 | 22 |

Exercise: InstanceMethods.cs

Reproduce deposit=5 and balance=15, then use the pinned deposit variants 0 and 12 to predict balance=10 and balance=22.