C# List 详解一

这篇具有很好参考价值的文章主要介绍了C# List 详解一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、概述

二、构造函数

1.List()  

2.List(IEnumerable)    

3.List(Int32)    

三、属性

1.Capacity    

2.Count    

3.Item[Int32]    

四、方法

1.Add(T)    

2.AddRange(IEnumerable)    

3.AsReadOnly()    

4.BinarySearch(T)


C# List 文档(一)

1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.BinarySearch(T),

C# List 文档(二)

5.Clear(),6.Contains(T),7.ConvertAll(Converter),8.CopyTo(Int32, T[], Int32, Int32),9.CopyTo(T[]),10.CopyTo(T[], Int32)

C# List 文档(三)

11.Equals(Object),12.Exists(Predicate),13.Find(Predicate),14.FindAll(Predicate),15.FindIndex(Int32, Int32, Predicate),16.FindIndex(Int32, Predicate),17.FindIndex(Predicate)  

C# List 文档(四)

18.FindLast(Predicate),19.FindLastIndex(Int32, Int32, Predicate),20.FindLastIndex(Int32, Predicate),21.FindLastIndex(Predicate),22.ForEach(Action),23.GetEnumerator(),24.GetHashCode(),25.GetRange(Int32, Int32) 

C# List 文档(五)

26.GetType(),27.IndexOf(T),28.IndexOf(T, Int32),29.IndexOf(T, Int32, Int32),30.Insert(Int32, T),31.InsertRange(Int32, IEnumerable),32.LastIndexOf(T),33.LastIndexOf(T, Int32),34.LastIndexOf(T, Int32, Int32)    

C# List 文档(六)

35.MemberwiseClone(),36.Remove(T),37.RemoveAll(Predicate),38.RemoveAt(Int32),39.RemoveRange(Int32, Int32),40.Reverse(),41.Reverse(Int32, Int32)    

C# List 文档(七)

42.Sort(),43.ToArray(),44.ToString(),45.TrimExcess(),46.TrueForAll(Predicate) 

C# List 文档(二)_熊思宇的博客-CSDN博客

C# List 文档(三)_熊思宇的博客-CSDN博客

C# List 文档(四)_熊思宇的博客-CSDN博客

C# List 文档(五)_熊思宇的博客-CSDN博客

C# List 文档(六)_熊思宇的博客-CSDN博客

C# List 文档(七)_熊思宇的博客-CSDN博客


一、概述

表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。

在 C# 的数据结构中,如果说谁用的最频繁,那么 List 这个数据结构绝对排第一,虽然用的多,在平时的开发中,大部分人只是重复的用几个固定的方法,比如 Add,Remove,Count,Clear 等。在一些初学者的代码中,假设要在 List 找出一个元素的下标,很多人直接写了一个 for 循环去判断,虽然我之前也是这么写的,其实 List 封装了很多很好用的方法,比如 FindIndex 这个方法就可以直接获取到 List 中某个元素的下标,根本不用自己写了一大堆代码去判断,我觉得对 List 这个类深入的去了解还是有必要的。

二、构造函数

1.List<T>()  

初始化 List<T> 类的新实例,该实例为空并且具有默认初始容量。

public List ();

常用的实例化方法,list 中不会有任何默认值

案例:

List<string> list = new List<string>();

2.List<T>(IEnumerable<T>)    

初始化 List<T> 类的新实例,该实例包含从指定集合复制的元素并且具有足够的容量来容纳所复制的元素。

public List (System.Collections.Generic.IEnumerable<T> collection);

参数
collection
IEnumerable<T>
一个集合,其元素被复制到新列表中。

案例:

string[] input = { "a","b","c" };
List<string> list = new List<string>(input);

3.List<T>(Int32)    

初始化 List<T> 类的新实例,该实例为空并且具有指定的初始容量。

public List (int capacity);

参数
capacity
Int32
新列表最初可以存储的元素数。

案例:

List<string> list = new List<string>(2);
Console.WriteLine(list.Count);

这里并不会和数组一样,指定 length 的长度为2 会有两个空值

C# List 详解一,C#,c#

用 Count 获取这时候是0,但用 Capacity 属性来获取就有长度了,感觉这样做的意义感觉不大

List<string> dinosaurs = new List<string>(4);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

运行:

C# List 详解一,C#,c#

三、属性

1.Capacity    

获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。

public int Capacity { get; set; }

属性值
Int32
在需要调整大小之前 List<T> 可包含的元素数目。

案例:

List<string> dinosaurs = new List<string>(4);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

2.Count    

获取 List<T> 中包含的元素数。

public int Count { get; }

属性值
Int32
List<T> 中包含的元素数。

案例:

List<int> list = new List<int>(2);
list.Add(1);
Console.WriteLine(list.Count);

3.Item[Int32]    

获取或设置指定索引处的元素。

public T this[int index] { get; set; }

参数
index
Int32
要获取或设置的元素的从零开始的索引。

属性值
T
指定索引处的元素。

案例:

List<int> list = new List<int>(2);
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
int num = list[1];
Console.WriteLine(num);

四、方法

1.Add(T)    

将对象添加到 List<T> 的结尾处。

public void Add (T item);

参数
item
T
要添加到 List<T> 末尾的对象。 对于引用类型,该值可以为 null。

案例:

List<int> list = new List<int>(2);
list.Add(1);

2.AddRange(IEnumerable<T>)    

将指定集合的元素添加到 List<T> 的末尾。

public void AddRange (System.Collections.Generic.IEnumerable<T> collection);

参数
collection
IEnumerable<T>
应将其元素添加到 List<T> 的末尾的集合。 集合自身不能为 null,但它可以包含为 null 的元素(如果类型 T 为引用类型)。

案例:

List<int> list = new List<int>(2);
int[] arr = { 13, 3, 5, 67, 34 };
list.AddRange(arr);

3.AsReadOnly()    

返回当前集合的只读 ReadOnlyCollection<T> 包装器。

public System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly ();

返回
ReadOnlyCollection<T>
一个对象,作为围绕当前 List<T> 的只读包装器。


案例:

下面代码的 AsReadOnly 用于获取包装原始列表的只读 IList<T> 泛型接口实现

namespace ListTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<string> dinosaurs = new List<string>(4);
            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            IList<string> roDinosaurs = dinosaurs.AsReadOnly();

            Console.ReadKey();
        }
    }
}

4.BinarySearch(T)

使用默认的比较器在整个已排序的 List<T> 中搜索元素,并返回该元素从零开始的索引。

public int BinarySearch (T item);

参数
item
T
要定位的对象。 对于引用类型,该值可以为 null。

返回
Int32
如果找到 item,则为已排序的 List<T> 中 item 的从零开始的索引;否则为一个负数,该负数是大于 item 的下一个元素的索引的按位求补。如果没有更大的元素,则为 Count 的按位求补。

案例:

using System;
using System.Collections.Generic;

namespace ListTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<string> dinosaurs = new List<string>();
            dinosaurs.Add("Pachycephalosaurus");
            dinosaurs.Add("Parasauralophus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Galimimus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Oviraptor");
            dinosaurs.Add("Tyrannosaurus");

            int index = dinosaurs.BinarySearch("Tyrannosaurus");
            Console.WriteLine(index);

            Console.ReadKey();
        }
    }
}

运行:

C# List 详解一,C#,c#

第 1 / 7  篇  End文章来源地址https://www.toymoban.com/news/detail-604159.html

到了这里,关于C# List 详解一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# list<T>去重

    List object is int object is decimal object is char object is bool object is string List List 集合里有三条记录,其中两条重复。 使用Distinct后,还有三条,说明distinct失败 原因是,引用类型即使属性一样,引用地址是不一样的。 只能用别的方式去避免。

    2024年02月05日
    浏览(33)
  • c# List<T>.Aggregate

    ListT.Aggregate 方法的定义: 参数解析如下: TAccumulate seed :初始累积值,也是累积的起始值(默认值)。 FuncTAccumulate, T, TAccumulate func :累积计算的逻辑函数,接受两个参数,第一个参数是当前的累积值,第二个参数是集合中的元素,返回一个新的累积值。 seed :初始累积值是一

    2024年02月12日
    浏览(23)
  • C# 给List编个序号

    给List编个号

    2024年02月07日
    浏览(27)
  • C# 泛型List排序的实现

    本文主要介绍了C# 泛型List排序的实现,分享给大家,具体如下: 代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 9

    2024年02月12日
    浏览(27)
  • C# List 复制之深浅拷贝

    声明类 执行上述方法, 修改list1 中的属性值, 发现list2 的属性值会跟着变化, list3 的属性值不发生变化; 由于进行的是浅拷贝,所以直接将list1的内容复制给了list2,虽然list1和list2所在的地址不一样,但是两个list存储的对象仍然是相同的(因为把list1复制到list2时,浅拷贝复制的

    2024年02月07日
    浏览(29)
  • C# list的sort排序

    目录 前言: 值类型的排序: 方法一:直接调用sort函数 方法二:通过C# ling表达式与CompareTo接口配合使用 方法三:降序的实现 对于自定义类型的sort排序  方法一:通过实现IComparable接口重写CompareTo方法来排序 方法二:通过ling表达式实现          有时需要对List列表中内

    2024年02月15日
    浏览(25)
  • C#简单操作:C#中List常用方法 判断存在、查找、排序

    目常用List来进行数据操作管理,有一些方法经常百度,所以这里记录下。 目录 1. List判断元素是否存在,返回bool 2. List查找,返回对象 3. List排序 4. 对象属性打印 5. List 其他方法  

    2024年02月11日
    浏览(33)
  • C#(五十八)之C#List

    前几天,看同事写的代码中有list相关的字眼,百度了一下,原来是C#中list泛型集合。 了解一下。 List:泛型集合,ListT类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IListT 泛型接口。  泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的

    2024年02月15日
    浏览(25)
  • 【C# 基础精讲】List 集合的使用

    在C#中, ListT 是一种非常常用的泛型集合类,用于存储一组相同类型的元素。 ListT 具有动态调整大小的能力,可以方便地添加、删除、查找和修改元素,非常灵活和高效。本文将详细介绍 ListT 集合的使用方法,包括创建 ListT 对象、添加元素、删除元素、查找元素、遍历集合

    2024年02月06日
    浏览(23)
  • C# List去掉某个位置的元素

    在 C# 中,可以使用 RemoveAt 方法从 List 中删除指定位置的元素。这个方法接受一个整数参数,表示要删除的元素的索引。 以下是一些示例代码,展示如何使用 RemoveAt 方法从 List 中删除指定位置的元素: 在这个示例中,我们首先创建了一个包含一些字符串的 Liststring 对象。然

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包