A class defines a new object type with fields that each object can store.

class A class is a blueprint for objects.

Class Definition

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

class Pet
{
    public string Name = "";
    public string Kind = "";
}

class Program
{
    static void Main()
    {
        string name = "Rex";
        Pet pet = new Pet();
        pet.Name = name;
        pet.Kind = "dog";

        Console.WriteLine($"name={pet.Name}");
        Console.WriteLine($"kind={pet.Kind}");
    }
}
using System;

class Pet
{
    public string Name = "";
    public string Kind = "";
}

class Program
{
    static void Main()
    {
        string name = "Milo";
        Pet pet = new Pet();
        pet.Name = name;
        pet.Kind = "dog";

        Console.WriteLine($"name={pet.Name}");
        Console.WriteLine($"kind={pet.Kind}");
    }
}
using System;

class Pet
{
    public string Name = "";
    public string Kind = "";
}

class Program
{
    static void Main()
    {
        string name = "Nora";
        Pet pet = new Pet();
        pet.Name = name;
        pet.Kind = "dog";

        Console.WriteLine($"name={pet.Name}");
        Console.WriteLine($"kind={pet.Kind}");
    }
}
  1. name ← Rex, pet ← Pet, pet.Name ← Rex, pet.Kind ← dog

    10{11    static void Main()12    {13        string name→ Rex = "Rex"; //@name="Milo", "Nora"14        Pet pet→ Pet = new Pet();15        pet.Name→ Rex = nameRex;16        pet.Kind→ dog = "dog";1718        Console.WriteLine($"name={pet.NameRex}");19        Console.WriteLine($"kind={pet.Kinddog}");20    }
    outputname=Rex
    kind=dog
  1. name ← Milo, pet ← Pet, pet.Name ← Milo, pet.Kind ← dog

    10{11    static void Main()12    {13        string name→ Milo = "Milo";14        Pet pet→ Pet = new Pet();15        pet.Name→ Milo = nameMilo;16        pet.Kind→ dog = "dog";1718        Console.WriteLine($"name={pet.NameMilo}");19        Console.WriteLine($"kind={pet.Kinddog}");20    }
    outputname=Milo
    kind=dog
  1. name ← Nora, pet ← Pet, pet.Name ← Nora, pet.Kind ← dog

    10{11    static void Main()12    {13        string name→ Nora = "Nora";14        Pet pet→ Pet = new Pet();15        pet.Name→ Nora = nameNora;16        pet.Kind→ dog = "dog";1718        Console.WriteLine($"name={pet.NameNora}");19        Console.WriteLine($"kind={pet.Kinddog}");20    }
    outputname=Nora
    kind=dog

Follow the Object

  1. name starts as Rex.
  2. new Pet() creates one object with fields.
  3. pet.Name = name stores Rex.
  4. pet.Kind = "dog" stores dog.
  5. The program prints name=Rex and kind=dog. | field | stored value | | --- | --- | | pet.Name | Rex | | pet.Kind | dog |

Exercise: ClassDefinition.cs

Reproduce name=Rex and kind=dog, then use the pinned name variants Milo and Nora to predict name=Milo kind=dog and name=Nora kind=dog.