.NET Framework – What's New in C# 7.0
Throw expressions are particularly welcome.  I&#x27;d previously dealt with that issue by creating a static method that returned the expected type, but just threw an exception [1][2]<p>I&#x27;m not sure it&#x27;s explicit in the blog, but it seems the deconstructor will be useful for pattern-matching using &#x27;is&#x27;.<p>Tuples. Yay! Finally!<p>Pattern-matching-switch-statement:  Not an expression.  That&#x27;s a bad call.  We have expression based ternary, throws, method bodies, and LINQ; switches are the last and most painful omission.<p>Local functions: Fantastic for libraries like mine, which is trying to bring functional programming to the C# world, but takes a hit with the allocation of delegates for common operations [3]  It should be a boon for anything LINQ based (implementations, rather than usage).<p>Return by ref and out parameters: I&#x27;d be happy if they just removed them from the language.  Ugly, error magnets.<p>All in all, good progress.  Hopefully they can make more progress on facilitating expression-based programming, and bring in record types for the next release.  The pain of creating immutable types is truly tedious.  And I&#x27;d desperately like to see partial generic parameter specifying (for when one of the generic arguments can&#x27;t be inferred by the type-system, so you then end up having to specify them all).<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;master&#x2F;LanguageExt.Core&#x2F;Prelude.cs#L209" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;master&#x2F;LanguageE...</a><p>[2] <a href="https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;master&#x2F;LanguageExt.Core&#x2F;Prelude.cs#L182" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;master&#x2F;LanguageE...</a><p>[3] <a href="https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;type-classes&#x2F;LanguageExt.Core&#x2F;TypeClasses&#x2F;Monad&#x2F;Monad.Prelude.cs#L70" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;louthy&#x2F;language-ext&#x2F;blob&#x2F;type-classes&#x2F;Lan...</a>