Challenge 3: An init-Only Property, Set Once — Possible Solution ==================================================================== Product.cs: class Product { public string Sku { get; init; } = ""; } Working — Program.cs: var product = new Product { Sku = "A1" }; Console.WriteLine(product.Sku); Output: A1 Broken attempt: product.Sku = "A2"; // attempting to reassign after construction Representative compile error: Program.cs(2,9): error CS8852: Init-only property or indexer 'Product.Sku' can only be assigned in an object initializer, or on 'this' or 'base' in an instance constructor or an 'init' accessor. Explanation: `init` allows Sku to be set exactly once, via the object-initializer syntax used when the Product instance is created (`new Product { Sku = "A1" }`). Once construction is complete, the property behaves as if it had no setter at all -- any assignment attempt after that point is rejected at compile time, not merely discouraged. This is the same mechanism used internally by C# 9's records, which rely on init-only properties to give immutability without requiring every field to be set entirely inside a hand-written constructor. WHY THIS WORKS AS AN ANSWER ------------------------------ This demonstrates init allowing exactly one assignment via object- initializer syntax, then reproduces the real CS8852 compile error the chapter describes when a second assignment is attempted afterward.