It's a really nice language to use, I'm quite surprised.
It's a really nice language to use, I'm quite surprised.
Because I had to check this myself: Monogame is not tied to mono! It claims to support dotnet 8, so it looks suitably current and maintained.
It is annoying that Microsoft had their own perfectly adequate game framework which they binned at one of the transitions https://en.wikipedia.org/wiki/Microsoft_XNA
There is another framework called FNA that I've not used personally but I've heard it tries to match XNA exactly while monogame is a bit more forward looking. So FNA is good for porting forward your older XNA games.
I want to branch out to native stuff like C++ & Rust for memory management stuff, but they don't seem to come close in terms of the reflection abilities or probably the function is there, but just a nightmare to work with.
Anybody have any thoughts/opinions?
Let me write a function without 50 tokens of boilerplate!
public static implicit operator ClassA(ClassB b)
Is very verbose. There are probably worse offenders. C# devs also love to add access modifiers even when its not needed. For example, private for anything that is meant to be private or the suffix `Async` even though you don't have a sync version of a method.As for the implicit cast, two extra tokens in an uncommon case doesn't seem so bad when you consider all the nice common things like var, the lambda syntax, initializers, pattern matching, LINQ, delegates, etc. etc.
Defining implicit cast operators frequently (especially ClassA -> ClassB) might be a sign that a better implementation is required. In practice, it's not done often.
Agree on unncessary Async suffix. It is a common mistake (it is one) to add it for methods that cannot or will not offer non-async variants.
Note: I’m ignoring <InternalsVisibleTo> csproj property.
2. It encourages everyone to think about nouns rather verbs.
It's not as extreme as java but the smell is there.
I don't really know how else to enunciate it anymore than how I don't like Taylor swift music or whatever.
There a time when class hierarchies are ugly but fine, completely fine, and genuinely a bit dangerous: C# doesn't seem to have an option for the latter