Files
Main/Assets/Plugins/References/FuncellBase/ObjectPool/ListPool.cs
2025-01-25 04:38:09 +08:00

50 lines
1.1 KiB
C#

using System.Collections.Generic;
namespace Thousandto.Core.Base
{
/// <summary>
/// 数据列表的一个缓存池,对于一些业务不用重复创建List,减少GC
/// </summary>
/// <typeparam name="T"></typeparam>
public class ListPool<T> where T:class
{
//所有回收的列表
List<List<T>> _items = new List<List<T>>();
//返回一个空列表
public List<T> New()
{
if (_items.Count > 0)
{
var ret = _items[_items.Count - 1];
_items.RemoveAt(_items.Count - 1);
return ret;
}
return new List<T>();
}
//移除列表
public void Free(List<T> obj)
{
if (obj != null)
{
obj.Clear();
_items.Add(obj);
}
}
//清理到所有缓存
public void Sweep()
{
_items.Clear();
}
//获取当前列表的数量
public int GetCount()
{
return _items.Count;
}
}
}