[csharp] Resize better if T is a class.

This commit is contained in:
pharan 2017-10-19 16:17:18 +08:00
parent a5eed13591
commit f2bac04e43

View File

@ -90,7 +90,18 @@ namespace Spine {
}
public ExposedList<T> Resize (int newSize) {
if (newSize > Items.Length) Array.Resize(ref Items, newSize);
int itemsLength = Items.Length;
var oldItems = Items;
if (newSize > itemsLength) {
Array.Resize(ref Items, newSize);
// var newItems = new T[newSize];
// Array.Copy(oldItems, newItems, Count);
// Items = newItems;
} else if (newSize > itemsLength) {
// Allow nulling of T reference type to allow GC.
for (int i = Count; i < itemsLength; i++)
oldItems[i] = default(T);
}
Count = newSize;
return this;
}