Properties and Encapsulation
Get-Only Properties
A get-only property can be assigned in a constructor and read afterward.
get-only property
A get-only property protects a value from later assignment outside the class.
Get-Only Properties
GetOnlyProperties.cs
Replay: real traced execution (multi-file project)
using System;
class Badge
{
public string Label { get; }
public int Level { get; }
public Badge(string label, int level)
{
Label = label;
Level = level;
}
}
class Program
{
static void Main()
{
int level = 2;
Badge badge = new Badge("helper", level);
string summary = badge.Label + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
using System;
class Badge
{
public string Label { get; }
public int Level { get; }
public Badge(string label, int level)
{
Label = label;
Level = level;
}
}
class Program
{
static void Main()
{
int level = 1;
Badge badge = new Badge("helper", level);
string summary = badge.Label + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
using System;
class Badge
{
public string Label { get; }
public int Level { get; }
public Badge(string label, int level)
{
Label = label;
Level = level;
}
}
class Program
{
static void Main()
{
int level = 4;
Badge badge = new Badge("helper", level);
string summary = badge.Label + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
level ← 2
16{17 static void Main()18 {19 int level→ 2 = 2; //@level=1, 420 Badge badge = new Badge("helper", level);21 string summary = badge.Label + ":" + badge.Level;public Badge(string label, int level)
8public Badge(string labelhelper, int level2)9{10 Label = labelhelper;11 Level = level2;12}badge ← Badge, summary ← helper:2
19 int level = 2; //@level=1, 420 Badge badge→ Badge = new Badge("helper", level);21 string summary→ helper:2 = badge.Labelhelper + ":" + badge.Level2;2223 Console.WriteLine($"level={level2}");24 Console.WriteLine($"summary={summaryhelper:2}");25}outputlevel=2 summary=helper:2
level ← 1
16{17 static void Main()18 {19 int level→ 1 = 1;20 Badge badge = new Badge("helper", level);21 string summary = badge.Label + ":" + badge.Level;public Badge(string label, int level)
8public Badge(string labelhelper, int level1)9{10 Label = labelhelper;11 Level = level1;12}badge ← Badge, summary ← helper:1
19 int level = 1;20 Badge badge→ Badge = new Badge("helper", level);21 string summary→ helper:1 = badge.Labelhelper + ":" + badge.Level1;2223 Console.WriteLine($"level={level1}");24 Console.WriteLine($"summary={summaryhelper:1}");25}outputlevel=1 summary=helper:1
level ← 4
16{17 static void Main()18 {19 int level→ 4 = 4;20 Badge badge = new Badge("helper", level);21 string summary = badge.Label + ":" + badge.Level;public Badge(string label, int level)
8public Badge(string labelhelper, int level4)9{10 Label = labelhelper;11 Level = level4;12}badge ← Badge, summary ← helper:4
19 int level = 4;20 Badge badge→ Badge = new Badge("helper", level);21 string summary→ helper:4 = badge.Labelhelper + ":" + badge.Level4;2223 Console.WriteLine($"level={level4}");24 Console.WriteLine($"summary={summaryhelper:4}");25}outputlevel=4 summary=helper:4