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

Record declaration syntax in C Sharp (C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Record declaration syntax
Start
↓
Write 'record'
↓
Specify Name
↓
Define Parameters (optional)
↓
Add Body (optional)
↓
Compile & Use Record
This flow shows how to declare a record: start with 'record', give it a name, optionally add parameters and body, then use it.
Execution Sample
C Sharp (C#)
record Person(string Name, int Age);

var p = new Person("Alice", 30);
Console.WriteLine(p.Name);
Declares a record Person with two properties, creates an instance, and prints the Name.
Execution Table
StepActionCode LineResult/Value
1Declare record Person with Name and Agerecord Person(string Name, int Age);Person type created with two properties
2Create instance p of Personvar p = new Person("Alice", 30);p.Name = "Alice", p.Age = 30
3Print p.NameConsole.WriteLine(p.Name);Output: Alice
4End of program-Program ends
💡 Program ends after printing the Name property of the record instance.
Variable Tracker
VariableStartAfter Step 2Final
pnullPerson(Name="Alice", Age=30)Person(Name="Alice", Age=30)
Key Moments - 2 Insights
Why do we not need to write properties explicitly inside the record?
Because the parameters in the record declaration automatically create properties, as shown in step 1 of the execution_table.
Can we create a record without parameters?
Yes, you can declare a record without parameters and add properties inside the body, but this example uses parameters for simplicity (see concept_flow).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of p.Age after step 2?
A30
B"Alice"
Cnull
D0
💡 Hint
Check the 'Result/Value' column in step 2 where p is created with Age=30.
At which step does the program output 'Alice'?
AStep 2
BStep 3
CStep 1
DStep 4
💡 Hint
Look at the 'Action' and 'Result/Value' columns for the output in the execution_table.
If we remove parameters from the record declaration, what changes in the execution?
AThe program will print 'Alice' anyway
BThe instance p will have Name and Age set automatically
CThe record will have no properties automatically created
DThe program will not compile
💡 Hint
Refer to key_moments about parameters creating properties automatically.
Concept Snapshot
Record declaration syntax in C#:
record Name(Type1 Prop1, Type2 Prop2);
- 'record' keyword creates immutable data type
- Parameters auto-create properties
- Can add body for methods or extra properties
- Use like class but simpler for data storage
Full Transcript
This example shows how to declare a record in C#. We start by writing 'record' followed by the record name and parameters inside parentheses. These parameters automatically become properties of the record. Then we create an instance of the record by calling its constructor with values. Finally, we access a property and print it. The execution table traces each step: declaring the record, creating an instance, printing a property, and ending the program. The variable tracker shows how the variable 'p' changes from null to holding the record instance. Key moments clarify that parameters create properties automatically and that records can be declared without parameters but then need explicit properties. The quiz tests understanding of property values, output timing, and effects of removing parameters. The snapshot summarizes the syntax and behavior of record declarations.

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

  1. Step 1: Understand what a record is

    A record is a special type in C# designed to hold data immutably.
  2. Step 2: Identify the main feature

    Records compare by value, not by reference, and are immutable by default.
  3. Final Answer:

    It provides immutable data with value-based equality. -> Option A
  4. 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

  1. Step 1: Recall record declaration syntax

    Records use parentheses with comma-separated parameters for properties.
  2. 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.
  3. Final Answer:

    record Person(int Id, string Name); -> Option B
  4. 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

  1. Step 1: Understand record equality behavior

    Records compare by value, so two records with same property values are equal.
  2. Step 2: Analyze the code

    p1 and p2 have same X and Y values (3,4), so p1 == p2 returns true.
  3. Final Answer:

    True -> Option A
  4. 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

  1. Step 1: Understand record members

    Records can have members, but fields should be properties for immutability.
  2. Step 2: Analyze the code

    The code declares a public field 'Year' instead of a property, which is not recommended and causes issues.
  3. Final Answer:

    Fields inside records must be declared as properties, not fields. -> Option D
  4. 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

  1. Step 1: Use concise record syntax with default parameter

    Records allow default values in the parameter list using '='.
  2. 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.
  3. Final Answer:

    record Book(string Title, string Author, int? Year = null); -> Option C
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard