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

◆ Sort() [8/8]

static void System.Array.Sort ( Array keys,
Array? items,
int index,
int length,
IComparer? comparer )
inlinestatic

Definition at line 2380 of file Array.cs.

2381 {
2382 if (keys == null)
2383 {
2384 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.keys);
2385 }
2386 if (keys.Rank != 1 || (items != null && items.Rank != 1))
2387 {
2388 ThrowHelper.ThrowRankException(ExceptionResource.Rank_MultiDimNotSupported);
2389 }
2390 int lowerBound = keys.GetLowerBound(0);
2391 if (items != null && lowerBound != items.GetLowerBound(0))
2392 {
2393 ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_LowerBoundsMustMatch);
2394 }
2395 if (index < lowerBound)
2396 {
2397 ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException();
2398 }
2399 if (length < 0)
2400 {
2401 ThrowHelper.ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum();
2402 }
2403 if (keys.Length - (index - lowerBound) < length || (items != null && index - lowerBound > items.Length - length))
2404 {
2405 ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen);
2406 }
2407 if (length <= 1)
2408 {
2409 return;
2410 }
2411 if (comparer == null)
2412 {
2414 }
2415 if (keys is object[] keys2)
2416 {
2417 object[] array = items as object[];
2418 if (items == null || array != null)
2419 {
2420 new SorterObjectArray(keys2, array, comparer).Sort(index, length);
2421 return;
2422 }
2423 }
2424 if (comparer == Comparer.Default)
2425 {
2426 CorElementType corElementTypeOfElementType = keys.GetCorElementTypeOfElementType();
2427 if (items == null || items.GetCorElementTypeOfElementType() == corElementTypeOfElementType)
2428 {
2431 {
2432 case CorElementType.ELEMENT_TYPE_I1:
2434 return;
2435 case CorElementType.ELEMENT_TYPE_BOOLEAN:
2436 case CorElementType.ELEMENT_TYPE_U1:
2438 return;
2439 case CorElementType.ELEMENT_TYPE_I2:
2441 return;
2442 case CorElementType.ELEMENT_TYPE_CHAR:
2443 case CorElementType.ELEMENT_TYPE_U2:
2445 return;
2446 case CorElementType.ELEMENT_TYPE_I4:
2448 return;
2449 case CorElementType.ELEMENT_TYPE_U4:
2451 return;
2452 case CorElementType.ELEMENT_TYPE_I8:
2453 case CorElementType.ELEMENT_TYPE_I:
2455 return;
2456 case CorElementType.ELEMENT_TYPE_U8:
2457 case CorElementType.ELEMENT_TYPE_U:
2459 return;
2460 case CorElementType.ELEMENT_TYPE_R4:
2462 return;
2463 case CorElementType.ELEMENT_TYPE_R8:
2465 return;
2466 }
2467 }
2468 }
2469 new SorterGenericArray(keys, items, comparer).Sort(index, length);
2470 static void GenericSort<T>(Array keys, Array items, int adjustedIndex, int length) where T : struct
2471 {
2473 if (items != null)
2474 {
2476 }
2477 else
2478 {
2479 span.Sort();
2480 }
2481 }
2482 }
static Span< T > UnsafeArrayAsSpan< T >(Array array, int adjustedIndex, int length)
Definition Array.cs:2624
static Comparer< T > Default
Definition Comparer.cs:11

References System.array, System.comparer, System.Collections.Generic.Comparer< T >.Default, System.Array.GetCorElementTypeOfElementType(), System.Array.GetLowerBound(), System.index, System.keys, System.length, System.Array.Length, System.Array.Rank, System.Array.SorterObjectArray.Sort(), System.Array.SorterGenericArray.Sort(), System.T, System.ThrowHelper.ThrowArgumentException(), System.ThrowHelper.ThrowArgumentNullException(), System.ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(), System.ThrowHelper.ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum(), System.ThrowHelper.ThrowRankException(), and System.Array.UnsafeArrayAsSpan< T >().