• anus@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    27 days ago

    pervasive unchecked nullability

    Framework management is hell, fat binaries inconvenient and not default

    No option monad in the standard lib

    Cross version dependencies simply don’t work in some contexts

    Compiler output only marginally better than working with c++

    At least it doesn’t have Gradle.

    • ඞmir@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      27 days ago

      pervasive unchecked nullability

      Addressed nowadays with the question mark and exclamation mark syntax, and programming without nullability is a pain

      Framework management is hell, fat binaries inconvenient and not default

      Nuget?

      Compiler output only marginally better than working with c++

      No one claims it’s faster at runtime than good C++, it’s just a lot easier to write decent code

      • Billegh@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        27 days ago

        Compiler output only marginally better than working with c++

        No one claims it’s faster at runtime than good C++, it’s just a lot easier to write decent code

        I think they’re referring to warning and error content. Compared to things like rust, deciphering error notifications from the c# compiler can sometimes feel like trying to figure out what a child with limited vocabulary is trying to tell you.

        Even with decades of personal experience with it, they can be confusing and non-informative sometimes for me.

    • AdamBomb@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      27 days ago

      Null reference checking by the compiler is enabled by default in new C# projects.

      C# doesn’t come with an option monad in its standard library, but its cooler sibling F# does.