public static List <T> Resize <T>(List <T> list, int length) where T : class, IPatchClass <T>, new() { if (list == null) { list = new List <T>(length); } if (list.Count > length) { list.RemoveRange(length, list.Count - length); } else { var add = length - list.Count; for (int i = 0; i < add; i++) { list.Add(new T()); } } for (int i = 0; i < length; i++) { if (list[i] == null) { list[i] = PatchClassAllocator <T> .Create(); } } return(list); }
///resize from >> FieldMergeUtil >> xxComponentSerializer.Merge public static T[] Resize <T>(T[] arr, int length) where T : class, IPatchClass <T>, new() { AssertUtility.Assert(arr == null || arr.Length == 0 || arr.Length == length, "resize a diff length static array"); if (arr == null || arr.Length != length) { arr = new T[length]; } for (int i = 0; i < arr.Length; i++) { if (arr[i] == null) { arr[i] = PatchClassAllocator <T> .Create(); } } return(arr); }