this post was submitted on 15 Nov 2024
206 points (93.6% liked)

Programmer Humor

32476 readers
598 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 20 hours ago (2 children)

I've only had to implement equality in C# but that didn't seem that hard of a problem. you just expand the operator = function

[–] [email protected] 9 points 18 hours ago (2 children)

It's not hard, just if you're doing it for a struct with a lot of fields it's a lot of boilerplate

[–] [email protected] 4 points 18 hours ago* (last edited 18 hours ago)

I just use the HashCode class and compare the results.

Pretty sure there's a source generator for it as well nowadays.

[–] [email protected] -4 points 17 hours ago* (last edited 17 hours ago) (1 children)

My IDE can do that for me. And it was able to do that pre AI boom. Yes, the code ends up more verbose, but I just collapse it.

So from a modern dev UX perspective, this shouldn't be a major difference.

[–] [email protected] 4 points 17 hours ago

Even if the tool works perfectly, you have to run it every time you change something. It's not the end of the world, but it's still much nicer to just have a macro to derive it at compile time.

[–] [email protected] 6 points 18 hours ago (1 children)

Then you should also override Equals(object), GetHashCode, and implement IEquatable<T>.

Thankfully a lot of the usual boilerplate code can be avoided using a record class or struct:

public record Person(string Name, uint Age);
[–] [email protected] 1 points 13 hours ago

Oh well, It does show how little I do have to actually use that. It just hasn't come up that much