Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ IndexOf< T >() [3/3]

static int System.Array.IndexOf< T > ( T[] array,
T value,
int startIndex,
int count )
inlinestatic

Definition at line 1955 of file Array.cs.

1956 {
1957 if (array == null)
1958 {
1959 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array);
1960 }
1961 if ((uint)startIndex > (uint)array.Length)
1962 {
1963 ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index();
1964 }
1965 if ((uint)count > (uint)(array.Length - startIndex))
1966 {
1967 ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count();
1968 }
1969 if (RuntimeHelpers.IsBitwiseEquatable<T>())
1970 {
1971 if (Unsafe.SizeOf<T>() == 1)
1972 {
1973 int num = SpanHelpers.IndexOf(ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(Unsafe.As<byte[]>(array)), startIndex), Unsafe.As<T, byte>(ref value), count);
1974 return ((num >= 0) ? startIndex : 0) + num;
1975 }
1976 if (Unsafe.SizeOf<T>() == 2)
1977 {
1978 int num2 = SpanHelpers.IndexOf(ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(Unsafe.As<char[]>(array)), startIndex), Unsafe.As<T, char>(ref value), count);
1979 return ((num2 >= 0) ? startIndex : 0) + num2;
1980 }
1981 if (Unsafe.SizeOf<T>() == 4)
1982 {
1983 int num3 = SpanHelpers.IndexOf(ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(Unsafe.As<int[]>(array)), startIndex), Unsafe.As<T, int>(ref value), count);
1984 return ((num3 >= 0) ? startIndex : 0) + num3;
1985 }
1986 if (Unsafe.SizeOf<T>() == 8)
1987 {
1988 int num4 = SpanHelpers.IndexOf(ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(Unsafe.As<long[]>(array)), startIndex), Unsafe.As<T, long>(ref value), count);
1989 return ((num4 >= 0) ? startIndex : 0) + num4;
1990 }
1991 }
1992 return EqualityComparer<T>.Default.IndexOf(array, value, startIndex, count);
1993 }
static unsafe ref byte GetArrayDataReference(Array array)

References System.array, System.count, System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference(), System.SpanHelpers.IndexOf(), System.startIndex, System.T, System.ThrowHelper.ThrowArgumentNullException(), System.ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count(), System.ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index(), and System.value.