Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NullableEqualityComparer.cs
Go to the documentation of this file.
3
5
7[TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
9{
10 internal override int IndexOf(T?[] array, T? value, int startIndex, int count)
11 {
12 int num = startIndex + count;
13 if (!value.HasValue)
14 {
15 for (int i = startIndex; i < num; i++)
16 {
17 if (!array[i].HasValue)
18 {
19 return i;
20 }
21 }
22 }
23 else
24 {
25 for (int j = startIndex; j < num; j++)
26 {
27 if (array[j].HasValue && array[j].value.Equals(value.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.HasValue)
40 {
41 for (int num2 = startIndex; num2 >= num; num2--)
42 {
43 if (!array[num2].HasValue)
44 {
45 return num2;
46 }
47 }
48 }
49 else
50 {
51 for (int num3 = startIndex; num3 >= num; num3--)
52 {
53 if (array[num3].HasValue && array[num3].value.Equals(value.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.HasValue)
66 {
67 if (y.HasValue)
68 {
69 return x.value.Equals(y.value);
70 }
71 return false;
72 }
73 if (y.HasValue)
74 {
75 return false;
76 }
77 return true;
78 }
79
80 [MethodImpl(MethodImplOptions.AggressiveInlining)]
81 public override int GetHashCode(T? obj)
82 {
83 return obj.GetHashCode();
84 }
85
86 public override bool Equals([NotNullWhen(true)] object? obj)
87 {
88 if (obj != null)
89 {
90 return GetType() == obj.GetType();
91 }
92 return false;
93 }
94
95 public override int GetHashCode()
96 {
97 return GetType().GetHashCode();
98 }
99}
override bool Equals([NotNullWhen(true)] object? obj)
override int IndexOf(T?[] array, T? value, int startIndex, int count)
override int LastIndexOf(T?[] array, T? value, int startIndex, int count)