A record is a special kind of class in C# designed to hold immutable data with built-in value-based equality.
Click to reveal answer
beginner
How do you declare a simple record with two properties: Name (string) and Age (int)?
You declare it like this:
public record Person(string Name, int Age);
Click to reveal answer
beginner
What keyword is used to declare a record in C#?
The keyword record is used instead of class or struct.
Click to reveal answer
intermediate
Can records have methods and custom constructors?
Yes, records can have methods and custom constructors just like classes, allowing you to add behavior.
Click to reveal answer
intermediate
What is the difference between positional records and standard records?
Positional records declare properties in the record header for concise syntax, while standard records declare properties inside the body.
Click to reveal answer
Which keyword is used to declare a record in C#?
Aclass
Bstruct
Crecord
Dinterface
✗ Incorrect
The record keyword declares a record type in C#.
How do you declare a record with properties Name (string) and Age (int) using positional syntax?
Apublic class Person { string Name; int Age; }
Bpublic record Person(string Name, int Age);
Cpublic struct Person(string Name, int Age);
Dpublic record Person { string Name; int Age; }
✗ Incorrect
Positional records declare properties in the parentheses after the record name.
What feature do records provide by default?
ANo inheritance
BMutable properties only
CNo constructors allowed
DValue-based equality
✗ Incorrect
Records provide value-based equality, meaning two records with the same data are equal.
Can you add methods inside a record declaration?
AYes, records can have methods.
BNo, records cannot have methods.
COnly static methods are allowed.
DOnly abstract methods are allowed.
✗ Incorrect
Records can have methods just like classes.
Which of these is a valid way to declare a record with a custom constructor?
Apublic record Person { public string Name { get; init; } public Person(string name) { Name = name; } }
Bpublic record Person(string Name) { public Person() { } }
Cpublic record Person(string Name); public Person() { }
Dpublic record Person { string Name; Person(string name) { Name = name; } }
✗ Incorrect
You can declare properties and a custom constructor inside the record body.
Explain how to declare a positional record in C# and why you might use it.
Think about how to write properties directly in the record header.
You got /5 concepts.
Describe the main benefits of using records over classes for data storage.
Focus on how records handle data differently than classes.
You got /5 concepts.
Practice
(1/5)
1. What is a key feature of a record in C#?
easy
A. It provides immutable data with value-based equality.
B. It allows mutable fields by default.
C. It is used only for database connections.
D. It cannot have properties.
Solution
Step 1: Understand what a record is
A record is a special type in C# designed to hold data immutably.
Step 2: Identify the main feature
Records compare by value, not by reference, and are immutable by default.
Final Answer:
It provides immutable data with value-based equality. -> Option A
Quick Check:
Record = Immutable + Value Equality [OK]
Hint: Remember: records are immutable and compare by value [OK]
Common Mistakes:
Thinking records are mutable by default
Confusing records with classes for database use
Believing records cannot have properties
2. Which of the following is the correct syntax to declare a record with two properties int Id and string Name?
easy
A. record Person { int Id; string Name; }
B. record Person(int Id, string Name);
C. record Person = (int Id, string Name);
D. record Person(int Id; string Name);
Solution
Step 1: Recall record declaration syntax
Records use parentheses with comma-separated parameters for properties.
Step 2: Check each option
record Person(int Id, string Name); uses correct syntax: parentheses and commas. record Person { int Id; string Name; } uses braces without property syntax. record Person = (int Id, string Name); uses '=' incorrectly. record Person(int Id; string Name); uses semicolon instead of comma.
Final Answer:
record Person(int Id, string Name); -> Option B
Quick Check:
Record syntax = parentheses + commas [OK]
Hint: Use parentheses with commas for record properties [OK]
Common Mistakes:
Using braces instead of parentheses
Using semicolons instead of commas
Adding '=' sign incorrectly
3. What will be the output of the following code?
record Point(int X, int Y); var p1 = new Point(3, 4); var p2 = new Point(3, 4); Console.WriteLine(p1 == p2);
medium
A. True
B. False
C. Compilation error
D. Runtime exception
Solution
Step 1: Understand record equality behavior
Records compare by value, so two records with same property values are equal.
Step 2: Analyze the code
p1 and p2 have same X and Y values (3,4), so p1 == p2 returns true.
Final Answer:
True -> Option A
Quick Check:
Records compare by value = True [OK]
Hint: Records compare by value, so identical values mean equality [OK]
Common Mistakes:
Assuming reference equality instead of value equality
Expecting false because of different instances
Thinking it causes a compilation error
4. Identify the error in this record declaration:
record Car(string Make, string Model) { public int Year; }
medium
A. Records cannot have any fields declared inside braces.
B. The semicolon is missing after the record declaration.
C. The record must use parentheses for properties, not braces.
D. Fields inside records must be declared as properties, not fields.
Solution
Step 1: Understand record members
Records can have members, but fields should be properties for immutability.
Step 2: Analyze the code
The code declares a public field 'Year' instead of a property, which is not recommended and causes issues.
Final Answer:
Fields inside records must be declared as properties, not fields. -> Option D
Quick Check:
Use properties, not fields inside records [OK]
Hint: Use properties, not fields, inside records for immutability [OK]
Common Mistakes:
Using fields instead of properties inside records
Missing semicolon after record declaration (not required here)
Confusing braces and parentheses usage
5. You want to declare a record Book with properties string Title, string Author, and an optional int? Year that defaults to null. Which is the correct way to declare it?
hard
A. record Book { string Title; string Author; int? Year = null; }
B. record Book(string Title, string Author, int? Year);
C. record Book(string Title, string Author, int? Year = null);
D. record Book(string Title, string Author) { public int? Year = null; }
Solution
Step 1: Use concise record syntax with default parameter
Records allow default values in the parameter list using '='.
Step 2: Check each option
record Book(string Title, string Author, int? Year = null); correctly declares Year as nullable with default null. record Book(string Title, string Author, int? Year); lacks default. record Book { string Title; string Author; int? Year = null; } uses invalid field syntax. record Book(string Title, string Author) { public int? Year = null; } uses field with default inside braces, which is not idiomatic.
Final Answer:
record Book(string Title, string Author, int? Year = null); -> Option C
Quick Check:
Default values go in parentheses parameters [OK]
Hint: Set default values inside parentheses in record declarations [OK]
Common Mistakes:
Omitting default value for optional parameters
Using fields instead of properties inside braces
Trying to assign default values inside braces
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.