System.Collections.Generic 中的接口和類型區分

System.Collections.Generic 命名空間包含了許多與泛型集合相關的接口和類。這些接口定義了一組通用的集合行為,而具體的實現(如 List、Dictionary<TKey, TValue> 等)則遵循這些接口,從而提供具體的集合功能。以下是 System.Collections.Generic 中一些重要的接口及其含義:

IEnumerable

允許對象作為一個 IEnumerator 枚舉器來遍歷集合中的元素。這是所有泛型集合類必須實現的基本接口,用于支持 foreach 循環。

ICollection

繼承自 IEnumerable,表示一個包含元素的泛型集合,這些元素是強類型的,并提供了對集合中元素數量的訪問以及添加、刪除和清空集合成員的方法。

IList

繼承自 ICollection,表示一個有序的集合,可以通過索引訪問元素,并且支持在集合中的特定位置插入和刪除元素。
IReadOnlyCollection
表示一個只讀的泛型集合,只能訪問集合中的元素數量,但不能修改集合。這是為了支持只讀集合而設計的。

IReadOnlyList

繼承自 IReadOnlyCollection,表示一個有序的、只讀的泛型集合,可以通過索引訪問元素,但不能修改集合。

IDictionary<TKey, TValue>

表示一個鍵值對的集合,其中每個鍵都是唯一的,并且關聯一個值。提供了添加、檢索、更新和刪除鍵值對的方法。

IEnumerator

暴露一個對象,該對象包含遍歷集合所需的方法。IEnumerator 通常由集合的 GetEnumerator() 方法返回,用于支持 foreach 循環和其他枚舉操作。

IEqualityComparer

表示一個泛型比較器,用于確定兩個對象是否相等。這通常用于自定義集合中元素的比較方式,例如 HashSet 和 #Dictionary<TKey, TValue>。

IComparer

表示一個泛型比較器,用于對元素進行排序。與 IEqualityComparer 不同,IComparer 專注于排序邏輯,而不是相等性比較。
這些接口為泛型集合類提供了標準化的行為,使得不同類型的集合(如列表、字典、隊列等)能夠以一致的方式被操作和處理。通過實現這些接口,集合類可以與其他需要這些接口的庫和框架進行交互,增強了代碼的復用性和可維護性。

以下是一些 System.Collections.Generic 命名空間中的常用集合類型:

List - 表示一個可變大小的數組,可以動態地添加或刪除元素。

csharp
List numbers = new List { 1, 2, 3, 4, 5 };
Dictionary<TKey, TValue> - 表示一個鍵/值對的集合,其中每個鍵都是唯一的。
csharp

Dictionary<string, int> ages = new Dictionary<string, int> { { “Alice”, 30 }, { “Bob”, 25 } };

HashSet - 表示一個集合,它不允許重復的元素。

csharp
HashSet uniqueNumbers = new HashSet { 1, 2, 2, 3, 4, 4, 5 }; // 重復的元素會被忽略

LinkedList - 表示一個雙向鏈表。

csharp
LinkedList linkedList = new LinkedList();
linkedList.AddLast(1);
linkedList.AddLast(2);

Queue - 表示一個先進先出(FIFO)的集合。

csharp
Queue queue = new Queue();
queue.Enqueue(1);
queue.Enqueue(2);
int firstItem = queue.Dequeue(); // firstItem 現在是 1

Stack - 表示一個后進先出(LIFO)的集合。

csharp
Stack stack = new Stack();
stack.Push(1);
stack.Push(2);
int topItem = stack.Pop(); // topItem 現在是 2

SortedDictionary<TKey, TValue> 和 SortedList<TKey, TValue> - 表示一個根據鍵排序的字典或列表。

SortedSet - 表示一個排序的集合,其中元素唯一且按升序排序。

使用這些集合類型時,你需要使用 System.Collections.Generic 命名空間。這可以通過在文件的頂部添加以下指令來完成:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14843.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14843.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14843.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前后端開發入門全攻略:零基礎學起

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、前后端開發概覽 二、后端開發基礎&#xff1a;Flask框架入門 代碼案例&#xff1a;Hel…

vue3之使用圖片實現類似于 el-radio 的單選框功能,并且可實現選中和取消選中

背景 我們在工作中常用的一般都是使用類似于 element-plus 中的 el-radio 或者是 el-checkbox 來實現單選或者多選 若有一天我們遇到了一個新的業務需求,需要使用 圖片 來實現類似于 el-radio 的功能,并且要求實現第一次點擊時處于選中狀態,當我們再次點擊時處于非選中狀態…

談戀愛沒經驗?那就來刷談戀愛經驗寶寶吧

??作者主頁&#xff1a;小虛竹 ??作者簡介&#xff1a;大家好,我是小虛竹。2022年度博客之星評選TOP 10&#x1f3c6;&#xff0c;Java領域優質創作者&#x1f3c6;&#xff0c;CSDN博客專家&#x1f3c6;&#xff0c;華為云享專家&#x1f3c6;&#xff0c;掘金年度人氣作…

自動駕駛---Tesla的自動駕駛技術進化史(PerceptionPlanning)

1 前言 筆者在專欄《自動駕駛Planning模塊》中已經詳細講解了傳統自動駕駛Planning模塊的內容&#xff1a;包括行車的Behavior Planning和Motion Planning&#xff0c;以及低速記憶泊車的Planning&#xff08;最開始有15篇&#xff0c;目前逐漸更新到17篇&#xff09;。讀者對整…

【Spring】SSM介紹_SSM整合

1、SSM介紹 1.1簡介 SSM&#xff08;Spring SpringMVC MyBatis&#xff09;整合是一種流行的Java Web應用程序框架組合&#xff0c;它將Spring框架的核心特性、SpringMVC作為Web層框架和MyBatis作為數據訪問層框架結合在一起。這種整合方式提供了從數據訪問到業務邏輯處理再…

5.18 TCP機械臂模擬

#include <netinet/tcp.h>//包含TCP選項的頭文件 #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <linux/input.h>//讀取輸入事件 #include <sys/types.h> #include <sys/stat.h&…

對于mybatis和mybatisplus的選擇

對于mybatis和mybatisplus的選擇 1. 問題2. MP單表操作2.1 單表普通查詢2.2 單表分頁查詢 3. mybatis多表操作3.1 多表普通查詢3.2 多表分頁查詢 1. 問題 mybatis 和 mybatisplus作為當下主流的持久層框架&#xff0c;各有優劣勢。依據個人經驗&#xff1a;mybatis可以定制化輸…

一文詳解邏輯越權漏洞

1. 邏輯越權 1.1. 漏洞原理 邏輯越權漏洞就是當用戶跳過自己的權限限制&#xff0c;去操作同等級用戶或者上級用戶。正常的情況下&#xff0c;當一個用戶去訪問某個資源的時候&#xff0c;首先需要去登錄驗證自己的權限&#xff0c;其次是對數據的查詢&#xff0c;最后返回數…

gateway基本配置,如何配置?

文章推薦 1 作為程序員&#xff0c;開發用過最好用的AI工具有哪些&#xff1f; 2 Github Copilot正版的激活成功&#xff0c;終于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手&#xff0c;幫助你提高寫代碼效率 5 Jetbrains的a…

linux命令中arpd的使用

arpd 收集免費ARP信息 補充說明 arpd命令 是用來收集免費arp信息的一個守護進程&#xff0c;它將收集到的信息保存在磁盤上或者在需要時&#xff0c;提供給內核用戶用于避免多余廣播。 語法 arpd(選項)(參數)選項 -l&#xff1a;將arp數據庫輸出到標準輸出設備顯示并退出…

【云原生】Kubernetes----POD基本管理

目錄 引言 一、Pod基礎概念 &#xff08;一&#xff09;Pod簡介 &#xff08;二&#xff09;Pod的分類 1.自主式Pod 2.控制器管理的Pod &#xff08;三&#xff09;Pod使用方式 1.單容器pod 2.多容器Pod 3. 注意事項 二、Pod容器的分類 &#xff08;一&#xff09;…

C#中的惰性對象你使用過嗎?

概述&#xff1a;本文深入探討了 C# 中 Lazy Objects 的概念。惰性對象是高效資源配置和初始化的非常有益的工具&#xff0c;尤其是在這些過程成本高昂或耗時的情況下。它全面研究了 Lazy Objects 的功能、其目的和最佳用例&#xff0c;以及實際的實現策略。延遲加載簡介什么是…

【Unity】免費的高亮插件——QuickOutline

除了常見的HighLightSystem來實現的高亮功能&#xff0c;其實還有很多的方法實現物體的高亮。 在 Unity資源商店 搜索OutLine&#xff0c;就會有很多免費好用的高亮插件。 下面介紹一下 QuickOutline這個插件&#xff0c;在 Unity資源商店 搜索到后&#xff0c;點擊進去就可以…

推薦幾款新手學習編程的網站

免費在線開發平臺 介紹一款編程平臺&#xff0c;專為學生和開發者量身打造&#xff01;平臺擁有近4000道編程題目&#xff0c;支持多種編程語言&#xff08;包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3和C#&#xff09;&#xff0c;為您提供全面的學…

Tomcat端口配置

Tomcat是開源免費的服務器&#xff0c;其默認的端口為8080&#xff0c;本文講述一下如何配置端口。 最后在瀏覽器中輸入localhost:8888即可打開Tomcat界面

python判斷字符串是否為回文串的詳細解析與實現

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言&#xff1a;回文串的定義與背景 二、判斷回文串的基本思路 示例解析 三、代碼實…

三維場景感知之三維目標檢測方向入門

三維目標檢測入門 1 文檔需知2 基礎知識深度學習基礎必上手項目科研研究必知道的論文門戶深度學習必看論文 3 目標檢測入門知識二維目標檢測必看論文 4 三維目標檢測入門知識三維目標檢測必熟悉數據集三維目標檢測點云分類分割預備知識三維目標檢測必熟悉&#xff0c;必跑通&am…

C:技術面試總結

1 變量的聲明和定義: 定義:為變量分配地址和存儲空間 聲明:不分配地址。一個變量可以在多個地方聲明,但只能在一個地方定義。extern修飾的變量聲明,說明此變量將在文件以外或文件后面部分定義。 2 局部變量是否能與全局變量重名: 可以,局部變量會屏蔽全局變量 局部…

【postgresql初級使用】基于表達式或者函數的索引,字符串拼接可以使用索引了,帶來不一樣的優化效果

帶表達式的索引 ?專欄內容&#xff1a; postgresql使用入門基礎手寫數據庫toadb并發編程 個人主頁&#xff1a;我的主頁 管理社區&#xff1a;開源數據庫 座右銘&#xff1a;天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物. 文章目錄 帶表達式…

Node.js —— 前后端的身份認證 之用 express 實現 JWT 身份認證

JWT的認識 什么是 JWT JWT&#xff08;英文全稱&#xff1a;JSON Web Token&#xff09;是目前最流行的跨域認證解決方案。 JWT 的工作原理 總結&#xff1a;用戶的信息通過 Token 字符串的形式&#xff0c;保存在客戶端瀏覽器中。服務器通過還原 Token 字符串的形式來認證用…