← Back to context

Comment by jayd16

13 hours ago

> I found myself fighting the language semantics in C# way more often than Java

What's an example? I find C# quite well designed despite the Chinese menu of features.

> Java is remarkably consistent and really doesn't have any sharp edges. Even with generics and type erasure [...]

These back to back with a straight face...What is a sharp edge in your mind?

A sharp edge is writing meta typesystem code infolving covariance, invariance etc

Saw that in a typescript repository

It's ok when it's part of a very specific library, it's not ok using it as part of usual project code

  • What is the significant difference to Java? In C# you would write something like Foo<out Bar> instead of Foo<? extends Bar> or some such thing.

    • In c# you can't be generic over generic types. In java you can. Also enums can't implement interfaces.

  • > A sharp edge is writing meta typesystem code infolving covariance, invariance etc

    Like in Java? C# has its own sharp edges (like most or all languages), but it's almost disingenuous to bring a feature that is much more complex and weird in Java as an example.