-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand file tree
/
Copy pathEquals.cs
More file actions
39 lines (30 loc) · 840 Bytes
/
Equals.cs
File metadata and controls
39 lines (30 loc) · 840 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
class NoEquals { }
class Equals1
{
public override bool Equals(object other) => false;
}
abstract class Equals2<T> : IEquatable<T>
{
public abstract bool Equals(T other);
public override bool Equals(object other) { return other != null && GetType() == other.GetType() && Equals((T)other); }
}
class Equals3 : Equals2<Equals3>
{
public override bool Equals(Equals3 other) => true;
}
struct NoEqualsStruct { }
struct Equals1Struct
{
public override bool Equals(object other) => false;
}
#nullable enable
class NullableEquals1
{
public override bool Equals(object? other) => false;
}
class NullableEquals2 : IEquatable<NullableEquals2>
{
public bool Equals(NullableEquals2? other) => other != null;
public override bool Equals(object? other) => other is NullableEquals2 n && Equals(n);
}