Record inheritance lets you create new records based on existing ones, so you can reuse and extend data easily.
Record inheritance in C Sharp (C#)
public record BaseRecord(string Name, int Age); public record DerivedRecord(string Name, int Age, string Job) : BaseRecord(Name, Age);
The derived record uses a colon : to inherit from the base record.
You must pass base record parameters to the base constructor in the derived record.
Person record and an Employee record that inherits from it and adds a Position.public record Person(string Name, int Age); public record Employee(string Name, int Age, string Position) : Person(Name, Age);
Dog inherits from Animal and adds a Breed property.public record Animal(string Species); public record Dog(string Species, string Breed) : Animal(Species);
This program creates a Person and an Employee (which inherits from Person). It prints both records showing their data.
using System; public record Person(string Name, int Age); public record Employee(string Name, int Age, string Position) : Person(Name, Age); class Program { static void Main() { var person = new Person("Alice", 30); var employee = new Employee("Bob", 40, "Manager"); Console.WriteLine(person); Console.WriteLine(employee); } }
Records provide built-in value equality, so inherited properties are included in comparisons.
You can override methods like ToString() in derived records if you want custom output.
Record inheritance lets you build new records from existing ones to reuse and extend data.
Use the colon : syntax to inherit and pass base parameters.
Inherited records keep all base properties and add new ones.
Practice
What does record inheritance in C# allow you to do?
Solution
Step 1: Understand record inheritance purpose
Record inheritance lets you build new records based on existing ones, adding new properties while keeping the base properties.Step 2: Analyze options
Only Create a new record that extends an existing record with additional properties correctly describes extending an existing record with new properties. Options A, B, and D describe actions not supported by record inheritance.Final Answer:
Create a new record that extends an existing record with additional properties -> Option DQuick Check:
Record inheritance = extend with new properties [OK]
- Thinking inheritance changes base properties
- Confusing records with classes
- Assuming inheritance deletes base properties
Which of the following is the correct syntax to inherit a record Person in C#?
public record Person(string Name, int Age);
Solution
Step 1: Recall record inheritance syntax
In C#, a derived record uses colon:to inherit and passes base parameters in parentheses after the base name.Step 2: Check each option
public record Employee(string Name, int Age, string Position) : Person(Name, Age); correctly uses colon and passes base parameters. Options B, C, and D use incorrect keywords or syntax.Final Answer:
public record Employee(string Name, int Age, string Position) : Person(Name, Age); -> Option AQuick Check:
Use ':' and pass base params in parentheses [OK]
- Using 'inherits' or 'extends' keywords
- Not passing base parameters
- Placing base parameters incorrectly
What will be the output of this code?
public record Person(string Name, int Age);
public record Employee(string Name, int Age, string Position) : Person(Name, Age);
var emp = new Employee("Alice", 30, "Developer");
Console.WriteLine(emp.Name + ", " + emp.Age + ", " + emp.Position);Solution
Step 1: Understand record inheritance and properties
The Employee record inherits Name and Age from Person and adds Position. Creating Employee sets all three properties.Step 2: Analyze output statement
The code prints emp.Name, emp.Age, and emp.Position separated by commas, so output is "Alice, 30, Developer".Final Answer:
Alice, 30, Developer -> Option CQuick Check:
Inherited + new properties print correctly [OK]
- Assuming only base or only derived properties print
- Expecting compilation error due to inheritance
- Mixing property order in output
Identify the error in this record inheritance code:
public record Person(string Name, int Age);
public record Employee(string Name, int Age, string Position) : Person;
var emp = new Employee("Bob", 25, "Tester");Solution
Step 1: Check inheritance syntax
Employee inherits Person but does not pass required base constructor arguments (Name, Age) after Person.Step 2: Identify correct fix
Base constructor arguments must be passed like: Person(Name, Age). Omitting them causes a compilation error.Final Answer:
Missing base constructor arguments in Employee inheritance -> Option BQuick Check:
Base constructor args required after ':' [OK]
- Forgetting to pass base parameters
- Thinking inheritance disallows extra properties
- Assuming records can't inherit
You have a base record Vehicle(string Make, string Model). You want to create a derived record Car that adds int Doors and overrides the ToString() method to show all info. Which is the correct way to do this?
Solution
Step 1: Use correct inheritance syntax with parameters
Derived record Car must inherit Vehicle using colon and pass Make and Model parameters:: Vehicle(Make, Model).Step 2: Override ToString() properly
Inside Car, override ToString() with the correct string interpolation including Doors property.Step 3: Check options
public record Car(string Make, string Model, int Doors) : Vehicle(Make, Model) { public override string ToString() => $"{Make} {Model} with {Doors} doors"; } uses correct syntax and override. Options B, C, and D use invalid keywords or omit constructor parameters.Final Answer:
public record Car(string Make, string Model, int Doors) : Vehicle(Make, Model) { public override string ToString() => $"{Make} {Model} with {Doors} doors"; } -> Option AQuick Check:
Use ':' with base params and override method inside record [OK]
- Using 'inherits' or 'extends' keywords
- Not passing base constructor parameters
- Trying to add fields instead of properties
Ready to prove it?
Pass the test and this pattern moves unknown
