可以自己拓展需要的方法,根据自己的需求写,方便自己
/// <summary>
/// 集合
/// </summary>
/// <typeparam name="T"类型</typeparam>
public class Ls<T>
{
public delegate void BoilerLogHandler(T t);
/// <summary>
/// 添加事件
/// </summary>
public event BoilerLogHandler AddChang;
/// <summary>
/// 删除事件
/// </summary>
public event BoilerLogHandler RemoveChang;
/// <summary>
/// 集合容器
/// </summary>
T[] l = new T[2];
/// <summary>
/// 索引器
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public T this[int index]
{
get { return Get(index); }
set { l[index] = value; }
}
int count = 0;
/// <summary>
/// 集合长度
/// </summary>
public int Count { get => count; set => count = value; }
/// <summary>
/// 获取指定位置的元素
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public T Get(int index)
{
return l[index];
}
/// <summary>
/// 添加元素
/// </summary>
/// <param name="t"></param>
public void Add(T t)
{
if (Count >= l.Length)
{
//容器放不下了,进行扩大复制
T[] ts = new T[l.Length * 2];
Array.Copy(l, ts, l.Length);
l = ts;
}
l[Count] = t;
Count++;
//触发添加事件
AddChang(t);
}
/// <summary>
/// 删除索引处的元素
/// </summary>
/// <param name="index"></param>
public void Remove(int index)
{
//触发删除事件
RemoveChang(l[index]);
//重新排序,把中间空的填起来
l[index] = default(T);
for (int i = index; i < Count - 1; i++)
{
l[i] = l[i + 1];
}
Count--;
}
/// <summary>
/// 删除指定位置的元素
/// </summary>
/// <param name="index"></param>
public void Remove(T t)
{
for (int i = 0; i < Count; i++)
{
if (l[i].Equals(t))
{
Remove(i);
return;
}
}
}
}
原文地址:http://www.494v.com/forum.php?mod=viewthread&tid=212