While reading some code, it came to my attention that some developers use the bitwise XOR operator, ^
, to generate the hashcode of an object.
What's the point of doing it like this? Does it have some advantages over other methods to get/generate the hashcode of an object?
Here is a code example.
class Student {
final String name;
final int age;
Student(this.name, this.age);
@override
bool operator ==(other) {
return (other is Student) && other.name == name && other.age == age;
}
@override
int get hashCode => age.hashCode ^ name.hashCode; // <-- Here
}
It has to be a single number, and the more it varies on more of the bits of any member of the object, the better.