Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Do you use and love C#?
13 points by hardwaresofton 43 days ago | hide | past | web | favorite | 18 comments
I'm particularly frustrated with it right now, and I would love to know how others who do not absolutely hate the .NET/C# ecosystem feel so I can have a balanced view.

My experience with .NET was quite frankly awful (and very dated so it might've gotten better). C# on the other hand I always found to be a joy to use, and always equated it to "better Java". Though most of my college courses used C# so I might just be partial to it.

This is what I expected ("better java"), and was disappointed when it was basically just more of the same. My college courses were in Java (and of professional work after college), and while I strongly disliked it as well, if I had to pick I would pick Java(or some other JVM language)+JVM over C#+CLR -- C# just didn't deliver on being better than Java in any appreciable way to me.

Could you think of something specific that you find a joy to do in C# that isn't a property of the IDE? "true" async/yield (completely stopped coroutine) is one of the things I was excited about, but quickly annoyed when the interface to `Task`s was so bloated and unintuitive... Why would somone call `.CountinueWith` on a task and NOT expect the result? Maybe I'm just expecting a specific interface out of `ContinueWith` that isn't there

I love c#, although that is waning as the language accrues more and more features, it's starting to feel like c++ and the stewards seem to want to move it in every direction possible, from low level high performance to high level application code.

The .net ecosystem has always been a mixed bag. MS did there best to kill off OSS usage with some very "me too" offerings early on. It's always been way too tied to windows. It can often be as enterprisey as the worst java has to offer. Nuget is used for far to many things like loading Visual Studio plugins.

.net core is a clusterfuck and seems to have embraced the move fast and break things motto, this is absolutely not something I or the companies using .net want. Everything is behind the dotnet build tool, even the compiler as an independent component is hidden away from you. The whole stack is moving way to fast for enterprise customers, which was there bread and butter.

As an avid fan and (previous) user of C#, the thing I struggled with was everything moving to Nuget...everything.

It felt very much like Nuget was an attempted solution to DLL hell but it was just another version of that same hell itself but at least now on your VS machine you didn't have to find wherever your company stored their libs

yep .net and .net core are a huge part of what I was frustrated with, but just overall the language didn't impress me when compared with Java, and definitely not when compared with Go. While I applaud that they're trying to do things differently (open sourcing, adding the dotnet build tool), I could not help but feel that .net core was a tirefire, when compared with other frameworks that happent o do the same thing across various languages.

Could you give some examples of useful new features that the language has accrued recently?

I don't use C# any more (outside of personal projects), but I absolutely love it as a language.

ASP.NET has always been a mixed bag for me, and I've always felt tied down by my decision to restrict myself to the Windows platform. More often than not, I've found that peoples grievances towards C# or .NET has been more to do with Windows issues, outside of actual issues with the language.

Outside of Windows, the sheer amount of control over the ecosystem has always turned a lot of devs away, despite it being something that .NET devs love. Give me Visual Studio and a decent set of standard Windows tools and I'll be in heaven, whereas someone that is used to choice might not feel the same.

Yes but with a few caveats, the language is getting quite big now, I think it would be daunting to start from scratch. The core part of the framework is OK, Forms hasn't kept up with the times and WPF is far too complex. Neither are cross platform so I'm not starting anything new with it.

What is the frustration ? Is is related to language or your understanding of the ecosystem and platform ? I absolutely love c#, use it everyday.

One part of me thinks that they are not going to treat Linux (my favorite platform) as first class, so this prevents me from investing in C#.

It might not be true but I am not stating a fact, merely expressing my bias against the dotnet platform. I hope they succeed anyway :)

We now use python, ruby, rust, go religiously.

Sure, but it's less a case of love and more that the language stays out of my way.

I care about the application and the end user's experience. Language is just a means to that end. C# makes it fairly easy to encode what I'm thinking in a safer way than, e.g., C or C++.

C# cannot express generic algorithms on unsafe pointers unlike F#. C# has dounting inconsitencies in generics inference, delegate and event handling, operators and in expression-statements, unlike F#. I use C# but love F#.

I love it for the efficiency it provide to the developpers. But, as a Linux user, I won't use it for my personnal projects.

I would be curious what issues you have with C#/.net

While it's tempting to air my perceived grievances I'm going to decide against it -- I've seen/done enough with C# that I know I will never choose it for a personal project (or work on it for a professional project) ever again, not when options like Go, Haskell, NodeJS + Typescript, Rust, Lisps (clojure/clisp/racket/scheme) and even Java exist. I'm sure if I typed out some long list of things I think are sufficient about the language, someone will take it as an opportunity to "dispell myths" or show me how if I write ~20 lines of boilerplate, it'll be just like the language was ergonomic from the start.

The C# community doesn't need another naysayer, but I did want to find out (maybe this is the wrong place to ask) from people who enjoy using it why they do.

My use case is I write a GUI tool in C#/.net, publish it and then hand it over to field service and production and they never bug me again unless they need a feature added.

> and even Java exist.

When you mention this, I think you are trolling. I can see starting a greenfield project in C#/.net. There isn't any reason to start a green field Java project. Just like there is little reason to start a greenfield C++ project.

Ahh, that's an interesting use case, I haven't written many GUI tools and the last time I wrote one was in Java (Swing) and it wasn't terrible but wasn't great either, so C# is pretty good/ergonomic for it?

When I say java, I mostly mean a JVM language... yeah I wouldn't really start a new project in Java, though I've heard nice things about JavaFX on the GUI side of things.

Implementing GUI apps in C#/.net with visual studio basically just works. C# as a language is 'fine'. And generics seem to be well implemented. Microsoft documentation for simple stuff is reasonably clear.

I think .net timers not so much.

"clisp" is an implementation, Common Lisp is commonly abbreviated CL.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact