A computed property calculates its value from other object state.

computed property A computed property returns a value instead of storing one directly.

Computed Properties

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

class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int Area
    {
        get { return Width * Height; }
    }
}

class Program
{
    static void Main()
    {
        int height = 4;
        Rectangle rectangle = new Rectangle();
        rectangle.Width = 5;
        rectangle.Height = height;

        Console.WriteLine($"height={height}");
        Console.WriteLine($"area={rectangle.Area}");
    }
}
using System;

class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int Area
    {
        get { return Width * Height; }
    }
}

class Program
{
    static void Main()
    {
        int height = 2;
        Rectangle rectangle = new Rectangle();
        rectangle.Width = 5;
        rectangle.Height = height;

        Console.WriteLine($"height={height}");
        Console.WriteLine($"area={rectangle.Area}");
    }
}
using System;

class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int Area
    {
        get { return Width * Height; }
    }
}

class Program
{
    static void Main()
    {
        int height = 6;
        Rectangle rectangle = new Rectangle();
        rectangle.Width = 5;
        rectangle.Height = height;

        Console.WriteLine($"height={height}");
        Console.WriteLine($"area={rectangle.Area}");
    }
}
  1. height ← 4, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 4

    15{16    static void Main()17    {18        int height→ 4 = 4; //@height=2, 619        Rectangle rectangle→ Rectangle = new Rectangle();20        rectangle.Width→ 5 = 5;21        rectangle.Height→ 4 = height4;2223        Console.WriteLine($"height={height4}");24        Console.WriteLine($"area={rectangle.Area}");
    outputheight=4
  2. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area20}");25}
  3. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area20}");25}
    outputarea=20
  1. height ← 2, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 2

    15{16    static void Main()17    {18        int height→ 2 = 2;19        Rectangle rectangle→ Rectangle = new Rectangle();20        rectangle.Width→ 5 = 5;21        rectangle.Height→ 2 = height2;2223        Console.WriteLine($"height={height2}");24        Console.WriteLine($"area={rectangle.Area}");
    outputheight=2
  2. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area10}");25}
  3. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area10}");25}
    outputarea=10
  1. height ← 6, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 6

    15{16    static void Main()17    {18        int height→ 6 = 6;19        Rectangle rectangle→ Rectangle = new Rectangle();20        rectangle.Width→ 5 = 5;21        rectangle.Height→ 6 = height6;2223        Console.WriteLine($"height={height6}");24        Console.WriteLine($"area={rectangle.Area}");
    outputheight=6
  2. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area30}");25}
  3. Console.WriteLine($"area={rectangle.Area}");

    23    Console.WriteLine($"height={height}");24    Console.WriteLine($"area={rectangle.Area30}");25}
    outputarea=30