There is an old anecdote about this kind of situation; Postman (P), Recipient ®:
R: what are you doing? P: I left a notice that I tried delivering a package and you weren’t home. R: But I clearly was! P: <shrugs> R: <bashes postman’s face in> P: WTF, MAN!? R: It wasn’t me, I wasn’t home.
And what would that equality entail? Reference equality? You have
.Equals
for that for every single class. Structural equality? You can write an operator for that (but yeah, there’s no structural equality out of the box for classes, that I have to concede).Hell, in newer C# (~3-4 versions back, I don’t recall off the top of my head) you have records, which actually do support that out of the box, with a lot more concise syntax to boot.
As fir that being Java all over again: it started off as a Java clone, and later on moved in its own direction. It has similar-ish syntax, but that’s the extent of it.