C# List 详解一

news2024/11/26 1:48:11

目录

一、概述

二、构造函数

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 会有两个空值

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

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

运行:

三、属性

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();
        }
    }
}

运行:

第 1 / 7  篇  End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+antd搭建登录页面——vue3初体验——基础积累

最近在跟着大神学习vue3&#xff0c;学习过程中遇到各种问题&#xff0c;简直跟几年前学习vue2时一样的不知所措。 认识vite_vue3 初始化项目到打包&#xff1a;http://t.csdn.cn/B3bwC 为了方便&#xff0c;我是直接在stepin-template项目的基础上操作的&#xff0c;省略了上…

Unity VisualScripting(Bolt)自定义Node(带详细注释)

效果&#xff1a;获取一个物体的全部子物体和孙物体等从属物体 //引用一些东西&#xff0c;这样才能用某些API using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;//类名和Node名一样 public class GetTreeChildr…

为什么要学框架?什么是Spring?

为什么要学框架&#xff1f;什么是Spring&#xff1f; 一、为什么要学框架&#xff1f; 学习框架相当于从 “小作坊” 到 “工厂” 的升级&#xff0c;小作坊什么都要自己做&#xff0c;工厂是组件式装配&#xff0c;特点就是高效。框架更加易用、简单且高效。 框架的优点展…

51单片机--DS18B20温度感应器

文章目录 DS18B20的介绍内部结构框图DS18B20存储器单总线的介绍硬件结构 单总线的时序结构温度存储格式DS18B20操作流程在LCD屏上显示温度实例 DS18B20的介绍 DS18B20是一种常用的数字温度传感器&#xff1b; 下面介绍它的特点和功能&#xff1a; 封装和引脚定义&#xff1a;…

win11我们无法创建新的分区也找不到现有的分区

U盘重装系统的时候 提示&#xff1a;win11我们无法创建新的分区也找不到现有的分区 ShiftF10 &#xff0c;调出 命令提示符&#xff1b; diskpart list disk select disk 盘编号 clean convert gpt 参考&#xff1a;怎么解决我们无法创建新的分区也找不到现有的分区问题&#x…

数据库索引解析(面试重点)

一.索引的基本含义 1.索引类似于一本书的目录&#xff0c;可以加快查询的进度 2.是以列为维度来设置的&#xff08;为一列来添加索引&#xff09; 二.索引的优劣 1.优势&#xff1a;提高查询的速度 2.劣势&#xff1a;占据额外的硬盘空间&#xff08;因为索引的相关数据要存储到…

vue3中将后端传来的json文件转成excel下载到本地

前言&#xff1a; 在浏览器中将JSON格式数据以excel文件的形式下载。该组件是基于[this thread] (https://stackoverflow.com/questions/17142427/javascript-to-export-html-table-to-excel)提出的解决方案。支持Vue3.2.25及以上版本使用 重要提示! Microsoft Excel中的额外提…

亚马逊云科技:云服务是支持数字创新的关键生产力

面对日益复杂的外部环境以及各种不期而至的“黑天鹅”事件&#xff0c;广大企业迫切地需要更加快速、更加高效、更加弹性、性价比更高的解决方案&#xff0c;通过持续不断的数字创新&#xff0c;来应对数字化转型中遭遇的各种挑战。 而在这个过程中&#xff0c;云服务正在发挥至…

opencv常用API记录(python版)

文章目录 1. cv2.minAreaRect2. cv2.boxPoints()3. cv2.drawContours()4. cv2.GaussianBlur5. cv2.Laplacian 1. cv2.minAreaRect 函数cv2.minAreaRect()是OpenCV中用于计算最小外接矩形的函数。它可以根据给定的轮廓点集&#xff0c;计算出一个包围该轮廓的最小外接矩形。 以…

kafka查看消息两种方式(命令行和软件)

1、命令行方式 ①找到kafka安装文件夹 ②执行命令 #指定offset为指定时间作为消息起始位置 kafka-consumer-groups.sh \ --bootstrap-server 20.2.246.116:9092 \ --group group_1 \ --topic lanxin_qiao \ --reset-offsets \ --to-datetime 2023-07-19T01:00:00.000 \ -exe…

【C++进阶之路】适配器、反向迭代器、仿函数

文章目录 前言一、适配器①模拟实现栈②模拟实现对列 二、反向迭代器三、仿函数总结 前言 我们先来笼统的介绍一下今天的三个内容。 适配器——简单的理解就是复用&#xff0c;用已经实现的轮子&#xff0c;来继续实现某种功能。 反向迭代器——原理很简单&#xff0c;就是对…

Openlayers实战:setCenter,setZoom设置跳转

Openlayers开发的项目中,经常会重新设定一个zoom,也会重新跳转到一个中心点。 所用的方法就是setZoom和setCenter。在Openlayers实战中,我们做一个简单的设置,来很好的认识一下这个常用的方法。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特…

Vue3组合式API+TypeScript写法入门

文章目录 前言1.reactive2.ref3.props4.computed5.emit6.watch总结 前言 参考Vue3官网. 本篇以组合式API为例, 但不包含setup语法糖式写法. 原本打算结合class-component, Vue3不推荐就不用了: OverView|Vue Class Component. 而且是不再推荐基于类的组件写法, 推荐单文件组件…

电脑硬盘指的是什么?电脑硬盘长什么样子呢

在很早之前就听说过电脑里面有硬盘&#xff0c;但是不知道电脑硬盘是什么样子&#xff0c;本章文章结合硬盘的接口类型&#xff0c;以及应用技术&#xff0c;说说与硬盘样式有关的知识 一。机械硬盘 如果从硬盘的应用技术来区分硬盘&#xff0c;一般分为两种&#xff0c;早些年…

Leetcode周赛 | 2023-7-23

2023-7-23 题1体会我的代码 题2我的代码 题3体会我的代码 题1 体会 01背包啊。01背包啊&#xff01;怎么能一直往回溯上想&#xff01;还是对动态规划太不熟悉了&#xff01;这不就是01背包吗&#xff1f;还要别人提示才知道。 我的代码 class Solution:def numberOfWays(se…

设计模式再探——状态模式

目录 一、背景介绍二、思路&方案三、过程1.状态模式简介2.状态模式的类图3.状态模式代码4.状态模式还可以优化的地方5.状态模式的项目实战&#xff0c;优化后 四、总结五、升华 一、背景介绍 最近产品中有这样的业务需求&#xff0c;不同时间(这里不是活动的执行时间&…

Spring 统一登录验证、数据格式返回、异常处理的实现

文章目录 spring统一功能实现前言1. 统一用户登录权限验证1.1 传统实现方式1.2 Spring AOP用户统一登录验证1.2.1 Spring 拦截器 2. 统一数据格式返回3. 统一异常处理 spring统一功能实现 前言 在上一篇博客我们介绍了Spring AOP以及简单使用了Spring AOP&#xff0c;这篇博客…

力扣 -- 122. 买卖股票的最佳时机 II

一、题目&#xff1a; 题目链接&#xff1a;122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 二、解题步骤 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码&#xff1a; clas…

【数据可视化】基于Python和Echarts的中国经济发展与人口变化可视化大屏

1.题目要求 本次课程设计要求使用Python和ECharts实现数据可视化大屏。要求每个人的数据集不同&#xff0c;用ECharts制作Dashboard&#xff08;总共至少4图&#xff09;&#xff0c;要求输入查询项&#xff08;地点和时间&#xff09;可查询数据&#xff0c;查询的数据的地理…

工业的相机与镜头(简单选型)

面阵相机&#xff0c;需要多大的分辨率&#xff1f;多少帧数&#xff1f; 前提条件&#xff1a; 1.被检测的物体大小 2.要求检测的精度是多少 3.物体是否在运动过程中进行检测&#xff0c;速度是多少 线阵相机选择(分辨率、扫描行数) 行频&#xff1a;每秒扫描多少行&#xf…