狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

了解 C# 中泛型與非泛型集合

admin
2024年11月15日 10:57 本文熱度 724

前言

在 C# 中,集合可以分泛型集合和非泛型集合兩種主要類型。兩種集合類型在類型、安全性、可用性和性能特征等方面有所不同。而在大多數(shù)情況下,建議使用泛型集合,因為它執(zhí)行速度比非泛型集合快,并且通過提供編譯時錯誤來最大限度地減少異常。本文了解泛型非泛型集合兩種類型的概述。

泛型集合

1、概述

泛型集合類型可以用來儲存任何類型的數(shù)據(jù),由 Collections.Generic 命名空間提供。

HashSet<string> hashSet = new HashSet<string>();List<int> numbers = new List<int>();

2、特

  • 類型安全

提供強大的類型安全性,在聲明元素時,允許指定包含的元素類型。類型的安全性在編譯時強制執(zhí)行,以防止與類型相關(guān)的運行時錯誤。

  • 可用性

在從集合中檢索元素時無需顯式強制轉(zhuǎn)換,對使用者更友好,在編碼時,可以使用強類型元素,使代碼更具可讀性且不易出錯。

  • 性能

避免裝箱和取消裝箱的開銷,使得在執(zhí)行速度和內(nèi)存使用方面都更有效。為值類型提供了更好的性能,并且在檢索元素時不需要強制轉(zhuǎn)換。

3、示例

  • List<T> (列表)

// 定義數(shù)字列表List<int> numbers = new List<int>();// 使用 Add 方法添加元素numbers.Add(1);numbers.Add(3);// 輸出列表元素for (int i = 0; i < numbers.Count; i++){    Console.WriteLine(numbers[i]);}// 定義客戶對象列表var customers = new List<Customer>() {     new Customer(){ Code = "Haiwei", Name="華為"},    new Customer(){ Code = "Xiaomi", Name="小米"},};// 輸出列表元素foreach (var customer in customers){    Console.WriteLine(customer.Code);}
public class Customer{    public string Code { get; set; }
   public string Name { get; set; }}          

  • Dictionary<TKey, TValue> (詞典)

// 定義字典Dictionary<string, int> dictionary = new Dictionary<string, int>();// 添加元素dictionary.Add("Xiaomi", 50);// 遍歷元素foreach (KeyValuePair<string, int> dict in dictionary){    Console.WriteLine(dict.Key);}Console.WriteLine(dictionary["Xiaomi"]);

  • Queue<T> (隊列)

// 定義字符串隊列Queue<string> queues = new Queue<string>();// 添加元素queues.Enqueue("A001");queues.Enqueue("A002");// 遍歷元素foreach (string queue in queues){    Console.WriteLine(queue);}

  • HashSet<T>(無序集)

// 定義字符串無序集HashSet<string> languages = new HashSet<string>();// 添加元素languages.Add("English");languages.Add("Simplified");languages.Add("Traditional");// 遍歷元素foreach (var language in languages){    Console.WriteLine(language);}

  • LinkedList<T> (鏈表)

// 定義整數(shù)鏈表LinkedList<int> linkedList = new LinkedList<int>();// 添加元素linkedList.AddLast(11);linkedList.AddFirst(12);// 判斷元素if (linkedList.Contains(11)){    Console.WriteLine("鏈表中存在11");}// 遍歷元素foreach (int item in linkedList){    Console.WriteLine(item);}

  • SortedSet<T> (有序集)

// 定義字符串堆棧Stack<string> stacks = new Stack<string>();// 添加元素stacks.Push("one");stacks.Push("two");// 遍歷元素foreach (string stack in stacks){    Console.WriteLine(stack);}

非泛型集合

1、概述

非泛型集合主要用于存儲多種類型的對象,具有較高的靈活性,但性能和類型安全性較差。由 System.Collections 命名空間提供。

ArrayList list = new ArrayList();Hashtable hashtable = new Hashtable();

2、特

  • 類型安全

非泛型集合將元素存儲為對象類型,并且在檢索元素時通常需要顯式強制轉(zhuǎn)換,因此它不是類型安全的。與類型相關(guān)的錯誤只能在運行時發(fā)現(xiàn)。

  • 可用性

在處理元素時涉及強制轉(zhuǎn)換和裝箱/取消裝箱操作,由于強制轉(zhuǎn)換會使代碼的可讀性降低且更容易出錯,從而降低其可用性。

  • 性能

由于存在裝箱和取消裝箱,使得非泛型集合可能會產(chǎn)生性能開銷,可能會導(dǎo)致性能下降,尤其在使用類型

3、示例

  • ArrayList(動態(tài)數(shù)組)

// 定義非泛型動態(tài)數(shù)組ArrayList arrayLists = new ArrayList();// 添加整數(shù)元素arrayLists.Add(1);// 添加字符串元素arrayLists.Add("A");// 添加布爾值元素arrayLists.Add(true);// 遍歷元素for (int i = 0; i < arrayLists.Count; i++){    Console.WriteLine(arrayLists[i]);}

  • Hashtable(哈希表)

// 定義哈希表Hashtable hashtable = new Hashtable();// 添加A鍵值為 1hashtable.Add("A", 1);// 添加B鍵值為 truehashtable.Add("B", true);// 添加C鍵值為 C0001hashtable.Add("C", "C0001");// 遍歷元素foreach (DictionaryEntry entry in hashtable){    Console.WriteLine(entry.Value );}// 移除元素hashtable.Remove("A");

  • Queue(隊列)

// 定義非泛型隊列Queue queues = new Queue();// 添加元素queues.Enqueue(1);queues.Enqueue("A001");queues.Enqueue(2);queues.Enqueue("A002");

  • Stack(堆棧)

// 定義非泛型堆棧Stack stacks = new Stack();// 添加元素stacks.Push("A");stacks.Push(1);stacks.Push(true);
// 輸出 true 時會報異常 無法將類型為“System.Boolean”的對象強制轉(zhuǎn)換為類型“System.String”foreach (string stack in stacks){    Console.Write(stack);}

  • SortedList(排序列表)

// 定義非泛型排序列表SortedList sortedLists = new SortedList();// 添加元素nsortedLists.Add("001", "Haiwei");nsortedLists.Add("002", "Xiaomi");// 判斷元素if (sortedLists.ContainsValue("Haiwei")){    Console.WriteLine("值已存在");}else{    sortedLists.Add("003", "Haiwei");}// 遍歷元素foreach (string sortedList in sortedLists.Keys){    Console.WriteLine(sortedList);}

小結(jié)

與非泛型集合相比,C# 中的泛型集合在類型安全性、性能和易用性方面具有顯著優(yōu)勢。在大多數(shù)情況下,建議使用泛型集合為首選方案。


該文章在 2024/11/15 11:21:53 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved