I mean, top-level programs are nice, I guess? IMO it's more of a means of attracting non-.NET developers into the fold. I work in a .NET shop and we probably won't use this in our production code.<p>The benefit of target-typed expressions IMO is that it changes property syntax from:<p>public List<Foo> Foos = new List<Foo>();<p>to simply:<p>public List<Foo> Foos = new();<p>It may seem subtle, but if you write C# you see this pattern constantly.<p>Honestly, these are the features in C#9 I'm least excited about. I'm much more excited about record types, init-only setters, not to mention the improved pattern-matching and type inference (no more casting nulls inside of ternary operators!).<p>Immutability in C# has classically been pretty cumbersome. I work on a payroll platform where we've managed to work around a lot of that, but we're excited to introduce record types and init-only setters in particular to help with some of the maintenance pain-points surrounding the elimination of side-effects from things like pay calculations.