List<T> 类
注解
List<T> 类是 ArrayList 类的泛型等效项。 使用时不强制指定长度,它通过使用大小根据需要动态增加的数组来实现 IList<T> 泛型接口。
您可以通过使用 Add 或 AddRange 方法将项添加到 List<T>。

声明
List<T> 集合名 = new List<T>();

属性
Capacity	获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。
Count	获取 List<T> 中包含的元素数。
Item[Int32]	获取或设置指定索引处的元素。

常用方法
增
Add(T)	将对象添加到 List<T> 的结尾处。
AddRange(IEnumerable<T>)	将指定集合的元素添加到 List<T> 的末尾。
Insert(Int32, T)	将元素插入 List<T> 的指定索引处。

删
Clear()	从 List<T> 中移除所有元素。
Remove(T)	从 List<T> 中移除特定对象的第一个匹配项。
RemoveAt(Int32)	移除 List<T> 的指定索引处的元素。

改
Sort()	使用默认比较器对整个 List<T> 中的元素进行排序。
Reverse()	将整个 List<T> 中元素的顺序反转。
ToArray()	将 List<T> 的元素复制到新数组中。

查
Contains(T)	确定某元素是否在 List<T> 中,常用于所以元素值都是唯一的情况
IndexOf(T)	搜索指定的对象,并返回整个 List<T> 中第一个匹配项的从零开始的索引。
BinarySearch(T)	使用默认的比较器在整个已排序的 List<T> 中搜索元素,并返回该元素从零开始的索引.
Find(Predicate<T>)	搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中的第一个匹配元素。
FindAll(Predicate<T>)	检索与指定谓词定义的条件匹配的所有元素。

重点

实际使用过程中,如果添加数据时为乱序,那么如果想获得正确的正序,只需要使用一次Sort即可.
但如果想获得正确的倒序,则要先使用一次Sort,再使用一次Reverse才可以.
因为假如数据为9,8,6,7,5, 那么使用Reverse后的效果为 5,6,7,8,9,并不是理想中的结果,但是Sort则是每次都能获得正确结果,所以想要获得正确的倒序要先Sort再Reverse.


看介绍BinarySearch跟IndexOf区别不大,实际上两个方法的搜索方式是不同的.
IndexOf是从列表头部开始遍历,而BinarySearch则是使用二分搜索.
因此假如列表中所有元素唯一,则此两种方法并无明显差别,而当有重复元素时,则BinarySearch经常会返回错误结果.如果要获得正确结果,要在使用BinarySearch前将列表排序或者拷贝到另一列表.
实际使用过程中,IndexOf适用范围更广,而如果数据量较大时,BinarySearch的效率就比较高了.

完整释义官方链接
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.list-1?view=netframework-4.8