Challenge 3: Nullable vs. Plain Value Types — Possible Solution ==================================================================== Working — Program.cs: int? nullableCount = null; Console.WriteLine(nullableCount); // prints nothing / blank, no error Broken attempt: int plainCount = null; Representative compile error: Program.cs(1,19): error CS0037: Cannot convert null to 'int' because it is a non-nullable value type Explanation: `int?` is really shorthand for Nullable -- a wrapper struct that adds an explicit "has a value or doesn't" flag on top of a real int, letting the variable represent the absence of a value without sacrificing int's own value-type semantics for the case where a value IS present. A plain `int`, by contrast, always holds a real value directly in the variable itself -- there is no separate "reference" that could instead point to nothing. Assigning null to it makes no sense at the type-system level, since null represents "no reference to anything," and a plain int was never a reference to begin with -- so the compiler rejects the assignment outright, at compile time, not runtime. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the chapter's own int/int? distinction with a working nullable example and the exact compile error a plain int produces, and the explanation correctly ties the failure to value-type semantics -- a plain value type holds real data directly, with no reference-like "nothing" state to represent.