And hell, “use .Equal” is exactly what it is all about, have you heard of == ?
Back in the day all the big languages were hard to learn and had lots of quirks, but somehow C/C++ moved on and became quite simple and elegant (you can write the worst trash with it ofc. but that’s like saying you shouldn’t cook because you might burn your chicken). C# not so much.
.Equals and == have different meaning in C#. Decent IDEs will warn you about that (and yes, that excludes Visual Studio, but that always was crap 😄).
As for (re)assignments - I don’t see an issue with that, tbh; you only have to be aware of whether you’re using a reference- or value type (and if you aren’t, then let’s be honest - you have bigger problems).
I admit, “canonical C#” looks like shit due to a fuckton of legacy stuff. Fortunately, newer patterns solve that rather neatly and that started way back in C# 6 or 7 (with arrow functions / props and inlined outs).
Tl;dr: check the new features, fiddle with the language yourself. Because hell, with refstructs you can make it behave like quasi-Rust
It’s a single =
a = 5;
b = c;
And hell, “use .Equal” is exactly what it is all about, have you heard of == ?
Back in the day all the big languages were hard to learn and had lots of quirks, but somehow C/C++ moved on and became quite simple and elegant (you can write the worst trash with it ofc. but that’s like saying you shouldn’t cook because you might burn your chicken). C# not so much.
.Equals
and==
have different meaning in C#. Decent IDEs will warn you about that (and yes, that excludes Visual Studio, but that always was crap 😄).I admit, “canonical C#” looks like shit due to a fuckton of legacy stuff. Fortunately, newer patterns solve that rather neatly and that started way back in C# 6 or 7 (with arrow functions / props and inlined
out
s).Tl;dr: check the new features, fiddle with the language yourself. Because hell, with
ref struct
s you can make it behave like quasi-Rust