Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://redd.it/a2r64m
- namespace Test
- {
- public class Demo
- {
- public int Number { get; private set; }
- public Demo(int TestInt)
- {
- Number = TestInt;
- }
- public override int GetHashCode()
- {
- //For multiple properties, it's usually a good idea to XOR the Hash code of them all together
- return Number;
- }
- public override bool Equals(object obj)
- {
- return obj != null &&
- //Compare hash codes before types because it's faster
- obj.GetHashCode() == GetHashCode() &&
- //Allow comparison with raw integers too
- (obj is int || obj.GetType() == GetType());
- }
- public static bool operator ==(Demo A, Demo B)
- {
- return A.Equals(B);
- }
- public static bool operator ==(Demo A, int B)
- {
- return A.Equals(B);
- }
- public static bool operator !=(Demo A, Demo B)
- {
- return !A.Equals(B);
- }
- public static bool operator !=(Demo A, int B)
- {
- return !A.Equals(B);
- }
- //Oh boy
- public static bool operator ==(Demo A, object B)
- {
- return true;
- }
- public static bool operator !=(Demo A, object B)
- {
- return true;
- }
- }
- }
- //Usage example (all print "True")
- //Equals
- Console.Error.WriteLine((new Demo(1)).Equals(new Demo(1)));
- Console.Error.WriteLine((new Demo(1)).Equals(1));
- //Operator
- Console.Error.WriteLine((new Demo(1)) == (new Demo(1)));
- Console.Error.WriteLine((new Demo(1)) == 1);
- //Schrรถdingers Equation
- Console.Error.WriteLine((new Demo(1)) == "Cheese");
- Console.Error.WriteLine((new Demo(1)) != "Chesse");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement