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

◆ Clear() [3/3]

static unsafe void System.Array.Clear ( Array array,
int index,
int length )
inlinestatic

Definition at line 774 of file Array.cs.

775 {
776 if (array == null)
777 {
778 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array);
779 }
780 ref byte source = ref Unsafe.As<RawArrayData>(array).Data;
781 int num = 0;
783 if (methodTable->IsMultiDimensionalArray)
784 {
785 int multiDimensionalArrayRank = methodTable->MultiDimensionalArrayRank;
786 num = Unsafe.Add(ref Unsafe.As<byte, int>(ref source), multiDimensionalArrayRank);
788 }
789 int num2 = index - num;
790 if (index < num || num2 < 0 || length < 0 || (uint)(num2 + length) > array.NativeLength)
791 {
792 ThrowHelper.ThrowIndexOutOfRangeException();
793 }
794 nuint num3 = methodTable->ComponentSize;
795 ref byte reference = ref Unsafe.AddByteOffset(ref source, (uint)num2 * num3);
796 nuint num4 = (uint)length * num3;
797 if (methodTable->ContainsGCPointers)
798 {
799 SpanHelpers.ClearWithReferences(ref Unsafe.As<byte, IntPtr>(ref reference), num4 / (uint)sizeof(IntPtr));
800 }
801 else
802 {
803 SpanHelpers.ClearWithoutReferences(ref reference, num4);
804 }
805 }
static unsafe MethodTable * GetMethodTable(object obj)

References System.array, System.SpanHelpers.ClearWithoutReferences(), System.SpanHelpers.ClearWithReferences(), System.Runtime.CompilerServices.RuntimeHelpers.GetMethodTable(), System.index, System.length, System.source, System.ThrowHelper.ThrowArgumentNullException(), and System.ThrowHelper.ThrowIndexOutOfRangeException().