Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GenericEqualityComparer.cs
Go to the documentation of this file.
3
5
7[TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
8public sealed class GenericEqualityComparer<T> : EqualityComparer<T> where T : IEquatable<T>
9{
10 internal override int IndexOf(T[] array, T value, int startIndex, int count)
11 {
12 int num = startIndex + count;
13 if (value == null)
14 {
15 for (int i = startIndex; i < num; i++)
16 {
17 if (array[i] == null)
18 {
19 return i;
20 }
21 }
22 }
23 else
24 {
25 for (int j = startIndex; j < num; j++)
26 {
27 if (array[j] != null && array[j].Equals(value))
28 {
29 return j;
30 }
31 }
32 }
33 return -1;
34 }
35
36 internal override int LastIndexOf(T[] array, T value, int startIndex, int count)
37 {
38 int num = startIndex - count + 1;
39 if (value == null)
40 {
41 for (int num2 = startIndex; num2 >= num; num2--)
42 {
43 if (array[num2] == null)
44 {
45 return num2;
46 }
47 }
48 }
49 else
50 {
51 for (int num3 = startIndex; num3 >= num; num3--)
52 {
53 if (array[num3] != null && array[num3].Equals(value))
54 {
55 return num3;
56 }
57 }
58 }
59 return -1;
60 }
61
62 [MethodImpl(MethodImplOptions.AggressiveInlining)]
63 public override bool Equals(T? x, T? y)
64 {
65 if (x != null)
66 {
67 if (y != null)
68 {
69 return x.Equals(y);
70 }
71 return false;
72 }
73 if (y != null)
74 {
75 return false;
76 }
77 return true;
78 }
79
80 [MethodImpl(MethodImplOptions.AggressiveInlining)]
81 public override int GetHashCode([DisallowNull] T obj)
82 {
83 return obj?.GetHashCode() ?? 0;
84 }
85
86 public override bool Equals([NotNullWhen(true)] object? obj)
87 {
89 }
90
91 public override int GetHashCode()
92 {
93 return typeof(GenericEqualityComparer<T>).GetHashCode();
94 }
95}
override int IndexOf(T[] array, T value, int startIndex, int count)
override bool Equals([NotNullWhen(true)] object? obj)
override int LastIndexOf(T[] array, T value, int startIndex, int count)