List介绍
List所属命名空间:System.Collections.Generic
public class List : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable
List类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口。
泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。
List常用方法、属性
1.Count
注:可以获取当前链表的元素个数
public class MyList : MonoBehaviour
{
List<int> myList = new List<int>();
void Start()
{
//打印出当前myList链表的长度
print(myList.Count);
}
}
2.Capacity
注:初始在链表中一个元素没有的时候真实长度是0在有了一个元素动态扩容时是4在添加第5个元素时链表动态扩容一次真实长度*2
public class MyList : MonoBehaviour
{
//声明默认真实长度为零的链表
List<int> myListOne = new List<int>();
//声明一个真实长度为10的链表
List<int> myListTow = new List<int>(5);
void Start()
{
print("myListOne内没有元素时的真实长度" + myListOne.Capacity);
print("myListTow内没有元素时的真实长度" + myListTow.Capacity);
for (int i = 0; i < 10; i++)
{
myListOne.Add(i);
print("myListOne链表真实长度: " + myListOne.Capacity + " myListOne链表元素个数: " + myListOne.Count);
}
for (int i = 0; i < 10; i++)
{
myListTow.Add(i);
print("myListTow链表真实长度: " + myListTow.Capacity + " myListTow链表元素个数: " + myListTow.Count);
}
//在修改下面两个链表的真实长度在输出真实长度
myListOne.Capacity = myListOne.Count;
myListTow.Capacity = myListTow.Count;
print("myListOne.Capacity修改后的真实长度: " + myListOne.Capacity);
print("myListTow.Capacity修改后的真实长度: " + myListTow.Capacity);
}
}
注意看控制台输出结果

3.Add
注:添加元素
public class MyList : MonoBehaviour
{
//声明默认真实长度为零的链表
List<int> myListOne = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
}
}
4.Contains
注:查找当前链表中是否存在某个元素
public class MyList : MonoBehaviour
{
//声明默认真实长度为零的链表
List<int> myListOne = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
if (myListOne.Contains(7))
{
print("myListOne中查找到了7");
}
else
{
print("myListOne中不存在7");
}
}
}
5.Remove
注:移除某个元素
public class MyList : MonoBehaviour
{
//声明默认真实长度为零的链表
List<int> myListOne = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
//第一次找7
if (myListOne.Contains(7))
{
print("myListOne中查找到了7并移除7");
//移除7
myListOne.Remove(7);
}
else
{
print("myListOne中不存在7");
}
//输出当前链表中的元素
foreach (var item in myListOne)
{
print(item);
}
//再次查找一遍
if (myListOne.Contains(7))
{
print("myListOne中查找到了7并移除7");
//移除7
myListOne.Remove(7);
}
else
{
print("myListOne中不存在7");
}
}
}
6.RemoveAll
注:批量移除
public class MyList : MonoBehaviour
{
List<int> myListOne = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
myListOne.RemoveAll((int a) =>
{
//删除奇数留下偶数
if (a % 2 == 1)
{
return true;
}
else
{
return false;
}
});
for (int i = 0; i < myListOne.Count; i++)
{
//输出删除后的链表元素
print(myListOne[i]);
}
}
}
7.Clear
注:清空链表所有元素
public class MyList : MonoBehaviour
{
List<int> myListOne = new List<int>();
List<int> myListTow = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
//清空链表
myListOne.Clear();
//输出清空后的链表元素长度
print(myListOne.Count);
}
}
8.Reverse
注:反转链表元素,将第一位放到最后一位以此反转(不存在元素大小排序)
public class MyList : MonoBehaviour
{
List<int> myListOne = new List<int>();
List<string> myListTow = new List<string>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
myListOne.Reverse();
foreach (var item in myListOne)
{
print(item);
}
myListTow.Add("1");
myListTow.Add("yi");
myListTow.Add("一");
myListTow.Reverse();
foreach (var item in myListTow)
{
print(item);
}
}
}
9.Sort
注:排序(有三个重载,默认不传参数的是从小到大排列)
public class MyList : MonoBehaviour
{
List<int> myListOne = new List<int>();
void Start()
{
for (int i = 0; i < 10; i++)
{
//添加元素
myListOne.Add(i);
}
myListOne.Reverse();
myListOne.Sort();
foreach (var item in myListOne)
{
print(item);
}
}
}
本文详细介绍了C#中的泛型类List<T>,包括其作为IList<T>接口的实现,以及Capacity、Count、Add、Contains、Remove、RemoveAll、Clear、Reverse、Sort等常用方法的使用示例,展示了如何在实际编程中灵活操作列表数据。
3437





