public static void AddArray <T>(this List <T> list, T[] itemsToAdd, int itemCount) { if (list.Capacity < list.Count + itemCount) { list.Capacity = list.Count + itemCount; } Array.Copy(itemsToAdd, 0, list.GetInternalArray(), list.Count, itemCount); ListInternalAccessor <T> .SetSize(list, list.Count + itemCount); }
public static void SetSize <T>(this List <T> list, int newSize) { #if XB1 // XB1_LISTEXTENSIONS_NOEMIT var sizeField = list.GetType().GetField("_size", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); sizeField.SetValue(list, newSize); var versionField = list.GetType().GetField("_version", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); versionField.SetValue(list, (int)versionField.GetValue(list) + 1); #else // !XB1 ListInternalAccessor <T> .SetSize(list, newSize); #endif // !XB1 }
public static void AddArray <T>(this List <T> list, T[] itemsToAdd, int itemCount) { if (list.Capacity < list.Count + itemCount) { list.Capacity = list.Count + itemCount; } Array.Copy(itemsToAdd, 0, list.GetInternalArray(), list.Count, itemCount); #if XB1 // XB1_LISTEXTENSIONS_NOEMIT var sizeField = list.GetType().GetField("_size", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); sizeField.SetValue(list, list.Count + itemCount); var versionField = list.GetType().GetField("_version", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); versionField.SetValue(list, (int)versionField.GetValue(list) + 1); #else // !XB1 ListInternalAccessor <T> .SetSize(list, list.Count + itemCount); #endif // !XB1 }
public static void SetSize <T>(this List <T> list, int newSize) { ListInternalAccessor <T> .SetSize(list, newSize); }