Records and Modern Types
Record Basics
A record stores data with a compact declaration.
record
A record is a type designed for data values.
Record Basics
RecordBasics.cs
Replay: real traced execution (multi-file project)
using System;
record Badge(string Name, int Level)
{
public override string ToString()
{
return Name + ":" + Level;
}
}
class Program
{
static void Main()
{
int level = 2;
Badge badge = new Badge("helper", level);
string summary = badge.Name + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
using System;
record Badge(string Name, int Level)
{
public override string ToString()
{
return Name + ":" + Level;
}
}
class Program
{
static void Main()
{
int level = 1;
Badge badge = new Badge("helper", level);
string summary = badge.Name + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
using System;
record Badge(string Name, int Level)
{
public override string ToString()
{
return Name + ":" + Level;
}
}
class Program
{
static void Main()
{
int level = 4;
Badge badge = new Badge("helper", level);
string summary = badge.Name + ":" + badge.Level;
Console.WriteLine($"level={level}");
Console.WriteLine($"summary={summary}");
}
}
level ← 2, badge ← helper:2, summary ← helper:2
12{13 static void Main()14 {15 int level→ 2 = 2; //@level=1, 416 Badge badge→ helper:2 = new Badge("helper", level);17 string summary→ helper:2 = badge.Namehelper + ":" + badge.Level2;1819 Console.WriteLine($"level={level2}");20 Console.WriteLine($"summary={summaryhelper:2}");21 }outputlevel=2 summary=helper:2
level ← 1, badge ← helper:1, summary ← helper:1
12{13 static void Main()14 {15 int level→ 1 = 1;16 Badge badge→ helper:1 = new Badge("helper", level);17 string summary→ helper:1 = badge.Namehelper + ":" + badge.Level1;1819 Console.WriteLine($"level={level1}");20 Console.WriteLine($"summary={summaryhelper:1}");21 }outputlevel=1 summary=helper:1
level ← 4, badge ← helper:4, summary ← helper:4
12{13 static void Main()14 {15 int level→ 4 = 4;16 Badge badge→ helper:4 = new Badge("helper", level);17 string summary→ helper:4 = badge.Namehelper + ":" + badge.Level4;1819 Console.WriteLine($"level={level4}");20 Console.WriteLine($"summary={summaryhelper:4}");21 }outputlevel=4 summary=helper:4