Challenge - 5 Problems
Readonly Structs Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of readonly struct method call
What is the output of this C# code using a readonly struct?
C Sharp (C#)
readonly struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public int Sum() => X + Y;
}
class Program
{
static void Main()
{
Point p = new Point(3, 4);
System.Console.WriteLine(p.Sum());
}
}Attempts:
2 left
💡 Hint
Think about what the Sum method returns and how readonly structs behave.
✗ Incorrect
The readonly struct Point has properties X=3 and Y=4. The Sum method returns X + Y, which is 7. There is no error or exception.
❓ Predict Output
intermediate2:00remaining
Effect of modifying field in readonly struct
What happens when you try to modify a field inside a readonly struct method?
C Sharp (C#)
readonly struct Counter
{
private int count;
public void Increment()
{
count++;
}
public int GetCount() => count;
}
class Program
{
static void Main()
{
Counter c = new Counter();
c.Increment();
System.Console.WriteLine(c.GetCount());
}
}Attempts:
2 left
💡 Hint
Readonly structs prevent modification of fields inside instance methods.
✗ Incorrect
In a readonly struct, instance methods cannot modify fields. The Increment method tries to change 'count', causing a compilation error.
🔧 Debug
advanced2:00remaining
Why does this readonly struct code fail to compile?
Identify the reason for the compilation error in this readonly struct code.
C Sharp (C#)
readonly struct Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public int Area() => Width * Height;
}
class Program
{
static void Main()
{
Rectangle r = new Rectangle { Width = 5, Height = 10 };
System.Console.WriteLine(r.Area());
}
}Attempts:
2 left
💡 Hint
Think about what readonly means for property setters in structs.
✗ Incorrect
Readonly structs cannot have properties with setters because that allows mutation. The set accessors cause a compilation error.
📝 Syntax
advanced2:00remaining
Which option correctly declares a readonly struct with an immutable field?
Choose the correct syntax to declare a readonly struct with an immutable field 'Id' of type int.
Attempts:
2 left
💡 Hint
Remember to use 'public readonly' for immutable fields in readonly structs.
✗ Incorrect
Option A correctly declares a readonly struct with a public readonly field and a constructor initializing it. Other options either miss 'readonly' or 'public' or have invalid syntax.
🚀 Application
expert2:00remaining
How many items are in the resulting list after processing readonly structs?
Given this code, how many elements does the list 'areas' contain after execution?
C Sharp (C#)
readonly struct Square
{
public int Side { get; }
public Square(int side) => Side = side;
public int Area() => Side * Side;
}
class Program
{
static void Main()
{
var squares = new Square[] { new(2), new(3), new(4) };
var areas = new System.Collections.Generic.List<int>();
foreach (var sq in squares)
{
areas.Add(sq.Area());
}
System.Console.WriteLine(areas.Count);
}
}Attempts:
2 left
💡 Hint
Count how many squares are in the array and how many times the loop runs.
✗ Incorrect
The array has 3 Square structs. The loop adds the area of each to the list, so areas.Count is 3.