It’s strange what people put up with in C#
There are real advanced issues here, not just syntax issues. I&#x27;d summarize the first four items like this:<p>A. (1,4) C# immutable collection support is a step-child, without full support for the required behaviours around it from the compiler and the community. That&#x27;s why VS allows &quot;immutableList.Add(item)&quot; as if it were mutable, when it should be an error.<p>Yea, C# isn&#x27;t just a functional language, but if there&#x27;s support for immutable collections it should be done right.<p>B. (2,3) There is &quot;no way to implement interfaces or abstract classes using an expression&quot;. The author&#x27;s example is simple, but one could imagine a comparison involving captured variables where the separate class complicates things, because any captured variable needs to be shoved in a constructor.<p>I&#x27;ve hit 1 and 2 directly, 3 comes naturally from 2 (when you can define an object expression, you want a simple syntax for the constructor), as well as 4 from 1. I&#x27;ve had sufficient annoyances with 1 I&#x27;ve decided to not use immutable collections until support is improved.<p>As for dynamic, it&#x27;s good for what it does, people who use it know the risks. Instead, I&#x27;d complain about nuget, when it&#x27;s too easy to use outdated&#x2F;obsolete packages and keep them that way. npm actually has better package management options. The saving grace is that the typical C# solution has far less dependencies than the JS&#x2F;TS projects, but it&#x27;s best to act prophylactically, and help the programmer to keep dependencies updated.