1. 2

  2. 3

    I’m glad I don’t work in C# anymore. It was once a nicer version of Java with a powerful library, but it’s slowly but surely turning into a managed version of C++ (but maybe I’m the only one who feels that way; I surely like little languages).

    1. 2

      No, I agree.

      Some people seem to think that adding more features improves a language.

      1. 2

        I watch C# language development from the sidelines now. I’ve worked with nothing but F# and SQL for almost 6 years. I agree. From my perspective there is runaway feature bloat…much of it trying to incorporate F# and ML family functional features. The nullable reference type I think is just monstrous. I doubt it will be much incorporated in legacy maintenance. The worst thing, from my perspective, is the Microsoft F# team had to expend valuable time making F# compatible with the new .NET nullable type, something totally useless for F# and only for C# interop. It could be years before such interop even shows up in the wild.

        1. 2

          I disagree with this.

          The following is a list of C# 6 and 7 features that I regularly use in my projects.

          • read-only autoproperties - most of the classes I write are immutable.
          • autoproperty iniitializers - minor quality of life improvement
          • expression bodies - forwarding methods and properties, declaring constructors in a single line
          • string interpolation - overriding ToString()
          • index initializers - nested dictionaries
          • out variables - int.TryParse(), third party APIs
          • throw expressions - guard clauses
          • discards - third party APIs
          • local functions - reducing duplicate code in catch clauses, eager precondition checks in iterator methods
          • null conditionals - third party APIs
          • nameof - assertions, binding, reflection
          • tuple deconstruction - required for the one-line constructor idiom
          • pattern matching - type checks for third party APIs

          Many of the C# 7 additions don’t apply to my work but I still prefer it to C# 6.

          I dislike the in keyword for readonly ref arguments but have no other complaints.

          1. 1

            I’ve been working with C# for few years now, and I totally agree.

            It was a nicer Java, with some useful stuff (LINQ, generators aka. yield return, properties), and now the features they keep adding are all half-assed, half-complete monstrousities breaking not only interop with other languages, but C# semantics itself (async make LINQ and generators unusable, and is spreading like cancer through a codebase. It only makes you unable to reason about your code, to be honest. You don’t know how and where task is scheduled, etc.).

            Meanwhile more and more features are being added, but records are not added, nor is support for generatd equality comparision and hashcode added via annotations (see Lombok @Data in Java world), because there will be records sometime.

            This was what I’ve been laughing about the Java world: missing features were either ideologized, either were already done, we ere only waiting for the next Java release (since long years, and a few had to pass still for it to arrive)

            I’m very disappointed, especially as I see that Java is being mismanaged by Oracle as well. I can only hope something better will come eventually, as I’d prefer f the future were not JavaScript.