A record is a special kind of class in C# designed to hold immutable data with built-in value-based equality and concise syntax.
Click to reveal answer
beginner
Can records in C# inherit from other records?
Yes, records can inherit from other records, allowing you to extend data structures while keeping value-based equality.
Click to reveal answer
intermediate
How does inheritance affect equality in C# records?
Derived records include base record properties in their equality checks, so two records are equal if all their properties match, including inherited ones.
Click to reveal answer
beginner
What is the syntax to declare a record that inherits from another record?
Use the colon (:) after the record name followed by the base record name. Example: public record Employee(string Name, int Id) : Person(Name, Id);
Click to reveal answer
intermediate
Can you override properties in derived records?
Yes, you can override virtual properties in derived records to customize behavior while preserving immutability.
Click to reveal answer
What keyword is used to indicate inheritance in C# records?
A:
Bextends
Cinherits
Dimplements
✗ Incorrect
In C#, the colon (:) is used to specify inheritance for classes and records.
Which of the following is true about record inheritance in C#?
ARecords cannot inherit from other records.
BRecords lose immutability when inherited.
CRecords must override all base properties.
DRecords inherit value-based equality including base properties.
✗ Incorrect
Derived records include base properties in their value-based equality checks.
How do you declare a record named 'Manager' that inherits from 'Employee'?
Arecord Manager inherits Employee {}
Brecord Manager : Employee {}
Crecord Manager extends Employee {}
Drecord Manager implements Employee {}
✗ Incorrect
The correct syntax uses a colon (:) to indicate inheritance.
Can you add new properties in a derived record?
AYes, derived records can add new properties.
BNo, derived records cannot add properties.
COnly if the base record is abstract.
DOnly if the base record is sealed.
✗ Incorrect
Derived records can add new properties to extend the data structure.
What happens to equality when you override a property in a derived record?
AEquality only compares base properties.
BEquality ignores overridden properties.
CEquality includes overridden properties in comparison.
DEquality is disabled.
✗ Incorrect
Overridden properties are included in the value-based equality check.
Explain how record inheritance works in C# and how it affects equality.
Think about how records extend data and compare values.
You got /4 concepts.
Describe how to declare a derived record and add new properties in C#.
Remember the syntax for inheritance and adding data.
You got /3 concepts.
Practice
(1/5)
1.
What does record inheritance in C# allow you to do?
easy
A. Delete properties from the base record in the derived record
B. Change the data type of existing properties in a record
C. Convert a record into a class automatically
D. Create a new record that extends an existing record with additional properties
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 D
Quick Check:
Record inheritance = extend with new properties [OK]
Hint: Inheritance means adding new features, not removing or changing [OK]
Common Mistakes:
Thinking inheritance changes base properties
Confusing records with classes
Assuming inheritance deletes base properties
2.
Which of the following is the correct syntax to inherit a record Person in C#?
public record Person(string Name, int Age);
easy
A. public record Employee(string Name, int Age, string Position) : Person(Name, Age);
B. public record Employee : Person(string Name, int Age, string Position);
C. public record Employee(string Name, int Age, string Position) inherits Person(Name, Age);
D. public record Employee(string Name, int Age, string Position) extends Person(Name, 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 A
Quick Check:
Use ':' and pass base params in parentheses [OK]
Hint: Use ':' and pass base parameters in parentheses [OK]
Common Mistakes:
Using 'inherits' or 'extends' keywords
Not passing base parameters
Placing base parameters incorrectly
3.
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);
medium
A. Alice, 30
B. Developer, 30, Alice
C. Alice, 30, Developer
D. Compilation error
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 C
Quick Check:
Inherited + new properties print correctly [OK]
Hint: Inherited properties are accessible like own properties [OK]
Common Mistakes:
Assuming only base or only derived properties print
Expecting compilation error due to inheritance
Mixing property order in output
4.
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");
medium
A. Employee record cannot have more than two properties
B. Missing base constructor arguments in Employee inheritance
C. Position property must be in base record
D. Cannot inherit from a record
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 B
Quick Check:
Base constructor args required after ':' [OK]
Hint: Always pass base constructor parameters after ':' [OK]
Common Mistakes:
Forgetting to pass base parameters
Thinking inheritance disallows extra properties
Assuming records can't inherit
5.
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?
hard
A. public record Car(string Make, string Model, int Doors) : Vehicle(Make, Model) { public override string ToString() => $"{Make} {Model} with {Doors} doors"; }
B. public record Car : Vehicle { public int Doors; public override string ToString() => $"{Make} {Model} with {Doors} doors"; }
C. public record Car(string Make, string Model, int Doors) inherits Vehicle { public override string ToString() => $"{Make} {Model} with {Doors} doors"; }
D. public record Car(string Make, string Model, int Doors) extends Vehicle(Make, Model) { public override string ToString() => $"{Make} {Model} with {Doors} doors"; }
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 A
Quick Check:
Use ':' with base params and override method inside record [OK]
Hint: Use ':' with base params and override inside record body [OK]
Common Mistakes:
Using 'inherits' or 'extends' keywords
Not passing base constructor parameters
Trying to add fields instead of properties
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.