A private field stores data that only the class can change directly.

private field A private field hides storage behind public methods or properties.

Private Fields

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

class Score
{
    private int points;

    public int Points
    {
        get { return points; }
    }

    public void Add(int amount)
    {
        points += amount;
    }
}

class Program
{
    static void Main()
    {
        int bonus = 3;
        Score score = new Score();
        score.Add(10);
        score.Add(bonus);

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"points={score.Points}");
    }
}
using System;

class Score
{
    private int points;

    public int Points
    {
        get { return points; }
    }

    public void Add(int amount)
    {
        points += amount;
    }
}

class Program
{
    static void Main()
    {
        int bonus = 1;
        Score score = new Score();
        score.Add(10);
        score.Add(bonus);

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"points={score.Points}");
    }
}
using System;

class Score
{
    private int points;

    public int Points
    {
        get { return points; }
    }

    public void Add(int amount)
    {
        points += amount;
    }
}

class Program
{
    static void Main()
    {
        int bonus = 5;
        Score score = new Score();
        score.Add(10);
        score.Add(bonus);

        Console.WriteLine($"bonus={bonus}");
        Console.WriteLine($"points={score.Points}");
    }
}
  1. bonus ← 3, score ← Score

    19{20    static void Main()21    {22        int bonus→ 3 = 3; //@bonus=1, 523        Score score→ Score = new Score();24        scoreScore.Add(10);25        score.Add(bonus);
  2. points ← 10

    pass 1 of 2
    12public void Add(int amount10)13{14    points→ 10 += amount10;15}
  3. score.Add(10);

    23Score score = new Score();24scoreScore.Add(10);25scoreScore.Add(bonus3);
  4. points ← 13

    pass 2 of 2
    12public void Add(int amount3)13{14    points→ 13 += amount3;15}
  5. score.Add(bonus);

    24score.Add(10);25scoreScore.Add(bonus3);2627Console.WriteLine($"bonus={bonus3}");28Console.WriteLine($"points={score.Points}");
    outputbonus=3
  6. get

    pass 1 of 5
    8{9    get { return points13; }10}
  7. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points13}");29}
  8. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points13}");29}
    outputpoints=13
  1. bonus ← 1, score ← Score

    19{20    static void Main()21    {22        int bonus→ 1 = 1;23        Score score→ Score = new Score();24        scoreScore.Add(10);25        score.Add(bonus);
  2. points ← 10

    pass 1 of 2
    12public void Add(int amount10)13{14    points→ 10 += amount10;15}
  3. score.Add(10);

    23Score score = new Score();24scoreScore.Add(10);25scoreScore.Add(bonus1);
  4. points ← 11

    pass 2 of 2
    12public void Add(int amount1)13{14    points→ 11 += amount1;15}
  5. score.Add(bonus);

    24score.Add(10);25scoreScore.Add(bonus1);2627Console.WriteLine($"bonus={bonus1}");28Console.WriteLine($"points={score.Points}");
    outputbonus=1
  6. get

    pass 1 of 5
    8{9    get { return points11; }10}
  7. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points11}");29}
  8. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points11}");29}
    outputpoints=11
  1. bonus ← 5, score ← Score

    19{20    static void Main()21    {22        int bonus→ 5 = 5;23        Score score→ Score = new Score();24        scoreScore.Add(10);25        score.Add(bonus);
  2. points ← 10

    pass 1 of 2
    12public void Add(int amount10)13{14    points→ 10 += amount10;15}
  3. score.Add(10);

    23Score score = new Score();24scoreScore.Add(10);25scoreScore.Add(bonus5);
  4. points ← 15

    pass 2 of 2
    12public void Add(int amount5)13{14    points→ 15 += amount5;15}
  5. score.Add(bonus);

    24score.Add(10);25scoreScore.Add(bonus5);2627Console.WriteLine($"bonus={bonus5}");28Console.WriteLine($"points={score.Points}");
    outputbonus=5
  6. get

    pass 1 of 5
    8{9    get { return points15; }10}
  7. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points15}");29}
  8. Console.WriteLine($"points={score.Points}");

    27    Console.WriteLine($"bonus={bonus}");28    Console.WriteLine($"points={score.Points15}");29}
    outputpoints=15