模拟动态数组,触摸数组的底层?
class Program
{static void Main(string[] args)
{
MyList<int> a = new MyList<int>();
a.Add(2);
a.Add(6);
a.Add(10);
a.Add(100);
a.Add(200);
a.Add(323);
a.Add(55);
a.Insert(10,500);
a.GetValue(3);
a.PrintValue();
for (int i = 0; i < a.Capacity; i++)
{
Console.WriteLine(a[i]);
}
}
}
{
int count;//添加元素量
T[] myList;
public MyList()
{
myList = new T[0];//初始化
}
public int Count
{
get { return count; }
}
public int Capacity//数组容量
{
get { return myList.Length; }
}
{
if (Capacity == 0)
{
myList = new T[4];//分配容量
}
else if (Count >= Capacity)
{
var newList = new T[Capacity * 2];//扩展容量
Array.Copy(myList, newList, count);
myList = newList;
}
myList[Count] = value;
count++;
}
public void Insert(int index, T value)
{
if (Count>=Capacity)
{
var newList = new T[Capacity * 2];
Array.Copy(myList, newList, Count);
myList = newList;
}
myList[index] = value;
}
{
if (index >= 0 && index < Capacity)
{
Console.WriteLine(myList[index]);
}
}
public void PrintValue()//内部遍历,方便外部调用
{
for (int i = 0; i < myList.Length; i++)
{
Console.WriteLine(myList[i]);
}
}
public T this[int index]//为外部遍历提供索引,使类的实例像数组一样索引
{
get { return myList[index]; }
set { myList[index] = value; }
}
}