《随笔三十一》——C#中的 “ 解析 泛型 “ List<T> 类 ” 中的方法和属性”

本文详细介绍了C#中List类的构造函数、属性和方法,包括默认构造函数、指定容量构造函数、添加和删除元素、查找与排序等操作,帮助开发者更好地理解和使用List
摘要由CSDN通过智能技术生成

目录

List Constructors

使用 List() 默认构造函数:

List(Int32)

List(IEnumerable)

Propertys

List.Capacity 

List.Count 

Methods

List.Add

List.AddRange(IEnumerable)

List.BinarySearch

List.Clear 

List.Contains(T)

List.CopyTo 

List.IndexOf 

List.Insert

List.InsertRange

List.LastIndexOf

List.Remove(T)

List.RemoveAt(Int32)

List.RemoveRange

List.Reverse

List.Sort 

List.ToArray

List.TrimExcess


点击这里进入官网了解更多信息

该类在 System.Collections.Generic 命名空间。

List<T> 类 的特点:

  • 是一个强类型的集合, 类型参数 T 指定列表中元素所允许的类型。
  • 可以动态添加和删除元素,也可以在某个位置插入新元素。
  • 支持通过索引访问元素,也支持对元素的查找操作。

List<T> Constructors


使用 List<T>() 默认构造函数:

public List ();
        static void Main(string[] args)
        {
            List<string> dinosaurs = new List<string>();  // 使用默认构造函数初始化,该实例为空并且具有默认初始容量。      
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Compsognathus");
            Console.WriteLine("输出dinosaurs 中所有的元素:");
            foreach (string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
            Console.WriteLine("Count: {0}", dinosaurs.Count);         
        }

Output:

Capacity: 0
输出dinosaurs 中所有的元素:
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

Capacity: 8
Count: 5
  • 使用默认的构造函数创建一个空列表。元素添加到列表中后, 列表的容量就会初始化扩大为可容纳4 ,个元素。
  • 如果添加了第5个元素, 列表的大小就重新设置为包含8个元素。
  • 如果8个元素还不够, 列表的大小就重新设置为包含16个元素。
  • 每次都会将列表的容量重新设置为原来的2倍。
  • 当列表的中的容量重新分配的时候,它会创建一个新的数组,使用Array.Copy()方法将旧数组中的元素复制到新数组中。

如果事先知道要存储的数据的个数,就可以利用列表的构造函数指定列表初始的容量大小

List<T>(Int32)

public List (int capacity);

        static void Main(string[] args)
        {
            List<string> dinosaurs = new List<string>(5);
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Deinonychus");
            Console.WriteLine();
            foreach (string s in dinosaurs)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

List<T>(IEnumerable<T>)

public List (System.Collections.Generic.IEnumerable<T> collection);
  • collection : 表示一个集合,其元素被复制到List<T> 对象中。
  • 如果 collection 为 null。抛出  ArgumentNullException
        static void Main(string[] args)
        {        
            List<string> dinosaurs1 = new List<string>(5) { "adas","huang", "cheng","tao"};        
            List<int> dinosaurs = new List<int>(5) { 5, 6, 7, 8, 9, 112 };
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);          
            Console.WriteLine();
            foreach (var s in dinosaurs)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        }

输出:
Capacity: 10

5
6
7
8
9
112

Capacity: 10
        static void Main(string[] args)
        {
            string[] input = { "Brachiosaurus", "Amargasaurus","Mamenchisaurus" };

            List<string> dinosaurs = new List<string>(input) { "huang","cheng","tao"}; // 注意这里初始化方法
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Compsognathus");
            dinosaurs.Add("Compsognathus");
            dinosaurs.Add("Compsognathus");

            Console.WriteLine();
            foreach (string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }
            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        }

输出:

Capacity: 6

Brachiosaurus
Amargasaurus
Mamenchisaurus
huang
cheng
tao
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus
Compsognathus
Compsognathus

Capacity: 24

Propertys


List<T>.Capacity 

public int Capacity { get; set; }
        static void Main(string[] args)
        {
            List<string> dinosaurs = new List<string>();

            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Compsognathus");
            Console.WriteLine();
            foreach (string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
            Console.WriteLine("Count: {0}", dinosaurs.Count);
        }
  • Capacity 是的元素数的 List<T> 在需要调整大小之前可以存储的最大元素数,而Count是当前  List<T> 中实际存储的元素个数。
  • Capacity 始终大于或等于Count。 如果 Count 在添加元素时超出 Capacity,则在复制旧元素和添加新元素之前,通过自动重新分配内部数组来增加容量。
  • 如果Capacity 明显大于Count 并且希望减少 List 使用的内存,则可以通过调用 TrimExcess 方法或通过将 Capaci
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值