Records and Modern Types
With Expressions
A with expression copies a record while changing selected values.
With Expressions
WithExpressions.cs
using System;
record Settings(string Theme, int FontSize)
{
public override string ToString()
{
return Theme + ":" + FontSize;
}
}
class Program
{
static void Main()
{
int fontSize = ;
Settings original = new Settings("light", 14);
Settings updated = original with { FontSize = fontSize };
Console.WriteLine($"fontSize={fontSize}");
Console.WriteLine($"original={original.Theme}:{original.FontSize}");
Console.WriteLine($"updated={updated.Theme}:{updated.FontSize}");
}
}
using System;
record Settings(string Theme, int FontSize)
{
public override string ToString()
{
return Theme + ":" + FontSize;
}
}
class Program
{
static void Main()
{
int fontSize = ;
Settings original = new Settings("light", 14);
Settings updated = original with { FontSize = fontSize };
Console.WriteLine($"fontSize={fontSize}");
Console.WriteLine($"original={original.Theme}:{original.FontSize}");
Console.WriteLine($"updated={updated.Theme}:{updated.FontSize}");
}
}
using System;
record Settings(string Theme, int FontSize)
{
public override string ToString()
{
return Theme + ":" + FontSize;
}
}
class Program
{
static void Main()
{
int fontSize = ;
Settings original = new Settings("light", 14);
Settings updated = original with { FontSize = fontSize };
Console.WriteLine($"fontSize={fontSize}");
Console.WriteLine($"original={original.Theme}:{original.FontSize}");
Console.WriteLine($"updated={updated.Theme}:{updated.FontSize}");
}
}
with expression
A `with` expression creates a modified copy of a record.