C#用数组实现List<>
class Program
{
static void Main(string[] args)
{
MyList<int> myList = new MyList<int>();
myList.Add(20);
myList.Add(45);
myList.Add(67);
myList[1] = 90;
myList.PrintSelf();
Console.WriteLine("-------------------------------------");
MyList<string> listStr = new MyList<string>();
listStr.Add("hello");
listStr.Add("C#");
listStr.Add("Unity");
listStr.RemoveAt(1);
listStr.PrintSelf();
}
}
public class MyList<T> //也可以对T进行约束Where
{
T[] memery;
int len;
public MyList()
{
memery = new T[2];
len = 0;
}
public void Add(T n)
{
if (len >= memery.Length)
{
T[] mem_New = new T[memery.Length*2];
memery.CopyTo(mem_New,0);
memery = mem_New;
}
memery[len] = n;
len++;
}
public void RemoveAt(int index)
{
if (len <= index||len<0)
{
Console.WriteLine("RemoveAt下标越界");
return;
}
for (int i = index+1; i < len; i++)
{
memery[i - 1] = memery[i];
}
len--;
}
public int Count()
{
return len;
}
public T Get(int index)
{
return memery[index];
}
public void PrintSelf()
{
for (int i = 0; i < len; i++)
{
Console.WriteLine(memery[i]);
}
}
public T this[int index] //构造索引器
{
get
{
if (index < 0 || index > len)
return default(T);
return memery[index];
}
set
{
if (index < 0 || index > len)
return;
memery[index] = value;
}
}
}