A readonly struct is a special kind of struct where all its fields are readonly. This means once created, its data cannot be changed, making it immutable.
Click to reveal answer
intermediate
Why use readonly structs instead of regular structs?
Readonly structs help avoid accidental changes to data and can improve performance by enabling the compiler to optimize code, especially when passing structs by reference.
Click to reveal answer
beginner
How do you declare a readonly struct in C#?
Use the keyword readonly before struct. For example: public readonly struct Point { public int X { get; } public int Y { get; } }
Click to reveal answer
intermediate
Can a readonly struct have methods that modify its fields?
No. Since all fields are readonly, methods cannot change the state of the struct. Any method that tries to modify fields will cause a compile error.
Click to reveal answer
beginner
What happens if you try to assign a value to a field inside a readonly struct after it is created?
The compiler will give an error because readonly structs prevent modification of their fields after creation, ensuring immutability.
Click to reveal answer
How do you declare a readonly struct in C#?
Astruct MyStruct readonly { }
Bpublic struct readonly MyStruct { }
Creadonly public class MyStruct { }
Dpublic readonly struct MyStruct { }
✗ Incorrect
The correct syntax places 'readonly' before 'struct': public readonly struct MyStruct { }
What is a key benefit of using readonly structs?
AThey improve immutability and can optimize performance.
BThey allow fields to be changed anytime.
CThey make structs behave like classes.
DThey allow inheritance from other structs.
✗ Incorrect
Readonly structs ensure immutability and help the compiler optimize code, improving performance.
Can a readonly struct have a method that modifies its fields?
AOnly if the method is static.
BNo, fields cannot be modified after creation.
CYes, always.
DYes, but only inside constructors.
✗ Incorrect
Readonly structs prevent modification of fields after creation, so methods cannot change fields.
What error occurs if you try to change a field in a readonly struct after it is created?
ACompiler error.
BRuntime exception.
CWarning only.
DNo error, it works fine.
✗ Incorrect
The compiler prevents modification of readonly struct fields and shows an error.
Which of these is true about readonly structs?
AThey can inherit from other structs.
BThey can have mutable fields.
CThey are immutable after creation.
DThey are reference types.
✗ Incorrect
Readonly structs are immutable after creation; their fields cannot be changed.
Explain what a readonly struct is and why you might use it.
Think about how readonly structs prevent changes and help the compiler.
You got /3 concepts.
Describe how to declare a readonly struct and what restrictions it imposes on its fields and methods.
Focus on declaration and immutability rules.
You got /3 concepts.
Practice
(1/5)
1.
What is the main purpose of declaring a struct as readonly in C#?
easy
A. To allow inheritance from the struct
B. To make the struct mutable
C. To enable dynamic resizing of the struct
D. To prevent modification of its fields after creation
Solution
Step 1: Understand what readonly means for structs
A readonly struct means its fields cannot be changed after the struct is created.
Step 2: Compare options with this meaning
Only To prevent modification of its fields after creation matches this behavior by preventing modification after creation.
Final Answer:
To prevent modification of its fields after creation -> Option D
Quick Check:
Readonly struct = Immutable fields [OK]
Hint: Readonly structs make data unchangeable after creation [OK]
Common Mistakes:
Thinking readonly allows inheritance
Confusing readonly with mutable structs
Assuming readonly structs can resize dynamically
2.
Which of the following is the correct way to declare a readonly struct in C#?
?
easy
A. readonly struct Point { public int X; public int Y; }
B. struct readonly Point { public int X; public int Y; }
C. struct Point readonly { public int X; public int Y; }
D. readonly Point struct { public int X; public int Y; }
Solution
Step 1: Recall correct syntax for readonly structs
The keyword readonly comes before struct in the declaration.
Step 2: Check each option's keyword order
Only readonly struct Point { public int X; public int Y; } places readonly before struct correctly.
Final Answer:
readonly struct Point { public int X; public int Y; } -> Option A
Quick Check:
Keyword order: readonly struct [OK]
Hint: Put 'readonly' before 'struct' keyword [OK]
Common Mistakes:
Placing readonly after struct
Mixing order of keywords
Using readonly as a suffix
3.
What will be the output of the following C# code?
readonly struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
}
var p = new Point(3, 4);
Console.WriteLine($"X: {p.X}, Y: {p.Y}");
medium
A. X: 3, Y: 4
B. X: 0, Y: 0
C. Compilation error due to readonly struct
D. Runtime error when accessing properties
Solution
Step 1: Understand readonly struct with get-only properties
The struct has get-only properties set in the constructor, which is allowed.
Step 2: Check the constructor and output
The constructor sets X=3 and Y=4, so printing them outputs "X: 3, Y: 4".
Final Answer:
X: 3, Y: 4 -> Option A
Quick Check:
Constructor sets values correctly [OK]
Hint: Readonly structs allow get-only properties set in constructor [OK]
Common Mistakes:
Assuming readonly structs cannot have properties
Thinking constructor cannot set properties
Expecting runtime errors accessing properties
4.
Identify the error in this code snippet using a readonly struct:
readonly struct Rectangle
{
public int Width;
public int Height;
public void Resize(int w, int h)
{
Width = w;
Height = h;
}
}
medium
A. Fields must be properties in readonly structs
B. Missing constructor for readonly struct
C. Cannot assign to fields inside a method of a readonly struct
D. Readonly structs cannot have methods
Solution
Step 1: Understand mutability rules in readonly structs
Readonly structs cannot modify their fields inside instance methods.
Step 2: Analyze the Resize method
Resize tries to assign new values to Width and Height fields, which is not allowed.
Final Answer:
Cannot assign to fields inside a method of a readonly struct -> Option C
Quick Check:
Readonly struct fields are immutable in methods [OK]
Thinking methods can modify fields in readonly structs
Assuming missing constructor causes error
Believing readonly structs cannot have any methods
5.
You want to create a readonly struct Circle that stores a radius and calculates area. Which of these implementations is correct and efficient?
?
hard
A. readonly struct Circle { public double Radius; public void SetRadius(double r) { Radius = r; } }
B. readonly struct Circle { public double Radius { get; } public Circle(double r) => Radius = r; public double Area => Math.PI * Radius * Radius; }
C. struct Circle { public double Radius; public double Area => Math.PI * Radius * Radius; }
D. readonly struct Circle { public double Radius { get; set; } public double Area() => Math.PI * Radius * Radius; }
Solution
Step 1: Check readonly struct with immutable radius
readonly struct Circle { public double Radius { get; } public Circle(double r) => Radius = r; public double Area => Math.PI * Radius * Radius; } uses a readonly struct with a get-only property set in constructor, which is correct.
Step 2: Verify area calculation and mutability
Area is a property calculated from Radius, no setters modify Radius, ensuring immutability and efficiency.
Final Answer:
readonly struct Circle { public double Radius { get; } public Circle(double r) => Radius = r; public double Area => Math.PI * Radius * Radius; } -> Option B
Quick Check:
Immutable radius with calculated area [OK]
Hint: Use get-only property and constructor for readonly struct fields [OK]
Common Mistakes:
Trying to set fields in readonly struct after creation
Using mutable fields in readonly structs
Adding setters that break immutability
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.