C# 自定义简单的IList

mac2024-05-19  33

最近在学C#,就手动写了一个IList

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WorkTwo { /// <summary> /// 自定义List /// </summary> /// <typeparam name="T">泛型</typeparam> public class MyList<T> { //数据 private T[] datas; /// <summary> /// 总条数 /// </summary> public int Count { get; set; } /// <summary> /// 当前下标 /// </summary> private int index; /// <summary> /// 初始化 /// </summary> public MyList() { this.datas = new T[16]; this.Count = 0; this.index = -1; } /// <summary> /// 获取下标值 /// </summary> /// <param name="index">下标</param> /// <returns></returns> public T Get(int index) { if(index > this.datas.Length || index < 0) { throw new Exception("数组越界"); } return this.datas[index]; } /// <summary> /// 获取元素下标 /// </summary> /// <param name="value">元素值</param> /// <returns></returns> public int IndexOf(T value) { for(int i = 0; i <= this.index; i++) { if(this.datas[i].Equals(value)) { return i; } } return -1; } /// <summary> /// 添加元素 /// </summary> /// <param name="value">元素值</param> public void Add(T value) { //当空间满时,则扩大原来的2倍 if(this.index >= this.datas.Length) { T[] copys = new T[datas.Length]; Array.Copy(this.datas, copys, this.datas.Length); this.datas = new T[this.datas.Length * 2]; Array.Copy(copys, this.datas, copys.Length); } this.datas[++this.index] = value; this.Count++; } /// <summary> /// 移除元素 /// </summary> /// <param name="value">元素值</param> public void Remove(T value) { int index = IndexOf(value); if(index != -1) { for (int i = index + 1; i <= this.index; i++) { this.datas[i - 1] = this.datas[i]; } this.index--; this.Count--; } } /// <summary> /// 清空值 /// </summary> public void Clear() { this.index = -1; this.Count = 0; Array.Clear(this.datas, 0, this.datas.Length); } } }

 

最新回复(0)