Bird
Raised Fist0
C Sharp (C#)programming~20 mins

Record inheritance in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Record Inheritance Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of record inheritance with positional parameters
What is the output of this C# code using record inheritance with positional parameters?
C Sharp (C#)
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);
AEmployee { Name = Alice, Age = 30, Position = Developer }
BPerson { Name = Alice, Age = 30 }
CPerson { Name = Alice, Age = 30, Position = Developer }
DEmployee { Name = Alice, Position = Developer }
Attempts:
2 left
💡 Hint
Remember that the derived record includes all properties from base and derived types in its ToString output.
❓ Predict Output
intermediate
2:00remaining
Value equality in record inheritance
What is the output of this C# code comparing two records with inheritance?
C Sharp (C#)
public record Person(string Name, int Age);
public record Employee(string Name, int Age, string Position) : Person(Name, Age);

var emp1 = new Employee("Bob", 25, "Tester");
var emp2 = new Employee("Bob", 25, "Tester");
Console.WriteLine(emp1 == emp2);
AFalse
BCompilation error
CRuntime exception
DTrue
Attempts:
2 left
💡 Hint
Records compare by value, including all properties from base and derived records.
❓ Predict Output
advanced
2:00remaining
Output of record inheritance with overridden ToString
What is the output of this C# code where a derived record overrides ToString?
C Sharp (C#)
public record Person(string Name, int Age)
{
    public override string ToString() => $"Person: {Name}, {Age}";
}
public record Employee(string Name, int Age, string Position) : Person(Name, Age);

var emp = new Employee("Carol", 28, "Manager");
Console.WriteLine(emp);
ACompilation error due to ToString override
BPerson: Carol, 28
CPerson { Name = Carol, Age = 28 }
DEmployee { Name = Carol, Age = 28, Position = Manager }
Attempts:
2 left
💡 Hint
The derived record inherits the overridden ToString from the base record unless it overrides it again.
❓ Predict Output
advanced
2:00remaining
Deconstruction behavior in record inheritance
What is the output of this C# code demonstrating deconstruction in record inheritance?
C Sharp (C#)
public record Person(string Name, int Age)
{
    public void Deconstruct(out string name, out int age) => (name, age) = (Name, Age);
}
public record Employee(string Name, int Age, string Position) : Person(Name, Age)
{
    public void Deconstruct(out string name, out int age, out string position) => (name, age, position) = (Name, Age, Position);
}

var emp = new Employee("Dave", 40, "Lead");
var (n, a, p) = emp;
Console.WriteLine($"{n}, {a}, {p}");
ADave, 40, Lead
BDave, 40
CCompilation error: Deconstruct mismatch
DRuntime error: Deconstruct failed
Attempts:
2 left
💡 Hint
The derived record defines a Deconstruct method with three out parameters matching its properties.
🧠 Conceptual
expert
2:00remaining
Understanding record inheritance and immutability
Which statement about record inheritance and immutability in C# is correct?
ADerived records must override all base record properties to maintain immutability.
BRecords are always fully immutable, so derived records cannot add mutable properties.
CDerived records can add mutable properties without affecting the base record's immutability.
DRecords do not support inheritance to preserve immutability.
Attempts:
2 left
💡 Hint
Think about how records handle properties and immutability in inheritance.

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

  1. 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.
  2. 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.
  3. Final Answer:

    Create a new record that extends an existing record with additional properties -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    public record Employee(string Name, int Age, string Position) : Person(Name, Age); -> Option A
  4. 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

  1. 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.
  2. Step 2: Analyze output statement

    The code prints emp.Name, emp.Age, and emp.Position separated by commas, so output is "Alice, 30, Developer".
  3. Final Answer:

    Alice, 30, Developer -> Option C
  4. 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

  1. Step 1: Check inheritance syntax

    Employee inherits Person but does not pass required base constructor arguments (Name, Age) after Person.
  2. Step 2: Identify correct fix

    Base constructor arguments must be passed like : Person(Name, Age). Omitting them causes a compilation error.
  3. Final Answer:

    Missing base constructor arguments in Employee inheritance -> Option B
  4. 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

  1. 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).
  2. Step 2: Override ToString() properly

    Inside Car, override ToString() with the correct string interpolation including Doors property.
  3. 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.
  4. 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
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard