Code Evolution Playground
Boilerplate Evolution
See the same concept implemented across multiple C# versions. Witness 24 years of boilerplate reduction.
1. Data Models and DTOs
See the same model evolve from verbose property patterns to concise immutable contracts.
C# 1.0Step 1
1public class User
2{
3 private string _name;
4 public string Name { get { return _name; } set { _name = value; } }
5}
Early versions required explicit backing fields and verbose property blocks.
C# 3.0Step 2
1public class User
2{
3 public string Name { get; set; }
4}
Auto-implemented properties removed repetitive boilerplate for common property patterns.
C# 9.0Step 3
1public record User(string Name);
Records introduced positional syntax for ultra-concise, value-based immutable modeling.
C# 12Step 4
1public class UserService(IDbConnection db)
2{
3 public User GetUser(int id) => db.Query<User>(id);
4}
Primary constructors extended to standard classes, completely eliminating constructor bodies and explicit field assignments for dependencies.
4 evolution examples · Click an example above to switch