Challenge 3: Chaining ?. and ?? Across a Two-Level Hierarchy — Possible Solution ==================================================================== Program.cs: class Address { public string? City; } class Customer { public Address? Address; } Customer customerWithCity = new Customer { Address = new Address { City = "Springfield" } }; Customer customerNoAddress = new Customer { Address = null }; string city1 = customerWithCity?.Address?.City ?? "Unknown"; string city2 = customerNoAddress?.Address?.City ?? "Unknown"; Console.WriteLine(city1); Console.WriteLine(city2); Output: Springfield Unknown Explanation: For customerWithCity, every link in the chain is non-null, so ?.Address?.City resolves all the way through to the real city string, and ?? never needs to supply its fallback. For customerNoAddress, Address itself is null -- the ?. immediately short-circuits the rest of the chain to null the moment it hits that null link, without throwing a NullReferenceException, and the whole expression evaluates to null. Because the overall result is null, ?? then supplies "Unknown" as the fallback. No explicit `if (customer != null && ...)` checks were written anywhere. WHY THIS WORKS AS AN ANSWER ------------------------------ This builds the exact two-level nested structure the chapter's own example uses and demonstrates both outcomes -- a fully-populated chain and a chain broken partway through -- confirming ?. short-circuits safely and ?? only kicks in when the chain actually resolves to null.