C# 中的隊(duì)列
Sep 03, 2024 pm 03:30 PM佇列是一個物件的集合,它以 FIFO(先進(jìn)先出)的形式表示,先加入的元素先出現(xiàn),在 C# 中,佇列集合類別存在於命名空間 System.Collection 中。佇列以 FIFO 順序儲存元素,我們可以按照先進(jìn)先出的方式存取元素。佇列與堆疊集合正好相反,其中堆疊是 LIFO(後進(jìn)先出)。 Queue 集合允許存在大量空值和重複值。佇列使用兩個方法,稱為 Enqueue() 和 Dequeue(),分別用於新增和檢索值。
文法:
隊(duì)列是使用稱為隊(duì)列的資料類型建立的。這裡「new」關(guān)鍵字是用來建立佇列的物件。在佇列集合中,我們使用 Enqueue 方法新增項(xiàng)目,使用 Dequeue 方法刪除項(xiàng)目。
Queue QueueObject = new Queue() // creation of Queue
QueueObject.Enqueue(element) // to add element to Queue
QueueObject.Dequeue() //to remove element to Queue
C# 中的佇列如何運(yùn)作?
佇列以 FIFO(先進(jìn)先出)的形式出現(xiàn),它是物件的集合,當(dāng)我們需要以先進(jìn)先出的方式存取專案時,會使用此流程。此佇列是非通用的,它使用 System.Collections 命名空間中定義的集合類型。一般來說,當(dāng)我們以佇列集合中儲存的方式使用資訊時,佇列很有用。
Queue 透過 IEnumerable、ICloneable、ICollection 介面實(shí)作。對於引用類型,它接受 null 有效值。在佇列集合中,新增項(xiàng)目時,我們使用 Enqueue 方法;刪除項(xiàng)目時,我們使用 Dequeue 方法。新增項(xiàng)目到佇列時,總?cè)萘繒詣釉黾铀璧挠洃涹w。
範(fàn)例:
using System; using System.Collections; public class QueueProgram { static public void Main() { // to create a queue - using Queue class Queue _objQueue = new Queue(); // to add an elements in Queue - using Enqueue() method _objQueue.Enqueue("DotNet"); _objQueue.Enqueue("SQL"); _objQueue.Enqueue("Java"); _objQueue.Enqueue("PHP"); _objQueue.Enqueue("Android"); Console.WriteLine("Working Process of Queue\n"); Console.WriteLine("Number of Elements Present in Object(_objQueue)? ?: {0}", _objQueue.Count); // to obtain the topmost element of _objQueue - using Dequeue method Console.WriteLine("\nTo Get the topmost element in Queue" + " is? ? ? ? ? ? : {0}", _objQueue.Dequeue()); Console.WriteLine("\nNumber of Elements Present in Object(_objQueue)? ?: {0}", _objQueue.Count); // to obtain the topmost element of _objQueue - using Peek method Console.WriteLine("\nTo Get the topmost element in Queue is? ? ? ? ? ? : {0}", _objQueue.Peek()); Console.WriteLine("\nNumber of Elements Present in Object(_objQueue)? ?: {0}", _objQueue.Count); // to check hether the element is present in the Queue if (_objQueue.Contains("SQL") == true) { Console.WriteLine("\nElement is Present !"); } else { Console.WriteLine("\nElement is not Present !"); } } }
在上面的程式中,我們將Queue宣告為_objQueue來保存Queue的項(xiàng)目。為了新增元素,我們使用 Enqueue() 方法,為了刪除元素,我們使用 Dequeue() 方法。 Count屬性用於取得佇列中元素的總數(shù),該屬性的傳回值是一個數(shù)字。另一個方法 Contains() 用來檢查給定值/元素是否存在,它會傳回 bool 值 true 或 false。 Peek() 用來取得佇列集合中最上面的值。
輸出:
從上面的輸出來看,顯示了 Queue 的項(xiàng)目。首先,它使用 Count() 方法顯示佇列中存在的元素總數(shù),然後使用 Peek() 方法顯示最上面的元素。透過使用 Contains() 方法,它檢查佇列集合中是否存在該元素。
建構(gòu)子
在 Queue 類別中,它是由用於建立佇列的建構(gòu)子組成。
- Queue():建構(gòu)子 Queue() 用於建立佇列類別的實(shí)例,它有助於使用預(yù)設(shè)成長因子。
- Queue(ICollection): 此建構(gòu)子用於建立佇列的實(shí)例,它包含從指定集合複製的項(xiàng)目,並且具有與複製的項(xiàng)目數(shù)相同的容量。它還使用預(yù)設(shè)的初始生長因子。
- Queue(Int32):此建構(gòu)函式用於建立一個空的 Queue 類別實(shí)例,該實(shí)例指定了初始容量,並使用預(yù)設(shè)的成長因子。
- Queue(Int32, Single):此建構(gòu)函式用於建立一個空的 Queue 類別實(shí)例,該實(shí)例指定了初始容量,並使用預(yù)設(shè)的成長因子。
C# 方法中的佇列函數(shù)
讓我們看看以下函數(shù)列表,其中是 Queue 類別的常用方法 -
- Enqueue():Enqueue方法用於在Queue中添加元素時使用,它是一個非泛型集合,因此我們可以在該方法中添加任何資料類型的元素。此方法使用的簽章是 void Enqueue(object obj)
- Dequeue():Dequeue 方法用於存取佇列,用於擷取佇列中最頂層的元素。透過用於刪除佇列的 FIFO 方法 Dequeue 及其傳回佇列集合中的第一個元素的結(jié)果,僅當(dāng)佇列的總計(jì)數(shù)始終大於零時才呼叫 Dequeue(),否則會引發(fā)例外狀況。此方法使用的簽章是 object Dequeue()
- Peek(): 此方法將始終傳回佇列集合中的第一個元素,而不是從佇列中刪除。如果呼叫空隊(duì)列集合,它會拋出異常。
- 此方法使用的簽章是object Peek()。
- Clear():此方法用於從佇列集合中刪除物件。此方法使用的簽章是 void Clear()。
- Contains():此方法用來檢查Queue集合中是否存在某個元素。此方法使用的簽章是 bool Contains(object obj).
- Clone():Clone() 方法用於建立隊(duì)列集合的淺表副本。
- Equals(Object):此方法用於檢查特定物件是否等於目前物件。
- 同步(佇列):此方法傳回一個包含原始佇列的新佇列。
- TrimToSize(): 此方法用於設(shè)定隊(duì)列集合中實(shí)際項(xiàng)目數(shù)的容量。
結(jié)論
在這篇文章中,我們了解了C#中Queue()的用法,它是基於先進(jìn)先出的概念,我們分別使用Enqueue()和Dequeue()方法來新增和刪除佇列。
以上是C# 中的隊(duì)列的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多線程和異步的區(qū)別在於,多線程同時執(zhí)行多個線程,而異步在不阻塞當(dāng)前線程的情況下執(zhí)行操作。多線程用於計(jì)算密集型任務(wù),而異步用於用戶交互操作。多線程的優(yōu)勢是提高計(jì)算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務(wù)性質(zhì):計(jì)算密集型任務(wù)使用多線程,與外部資源交互且需要保持 UI 響應(yīng)的任務(wù)使用異步。

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向?qū)ο缶幊桃隒語言,其演變歷程包括多次標(biāo)準(zhǔn)化,如C 11引入auto關(guān)鍵字和lambda表達(dá)式,C 20引入概念和協(xié)程,未來將專注於性能和系統(tǒng)級編程。 2.C#由微軟在2000年發(fā)布,結(jié)合C 和Java的優(yōu)點(diǎn),其演變注重簡潔性和生產(chǎn)力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發(fā)者的生產(chǎn)力和雲(yún)計(jì)算。

可以採用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進(jìn)行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進(jìn)行自動格式化;使用 XML 轉(zhuǎn)換工具(如 XSLT)定義轉(zhuǎn)換規(guī)則;或者使用編程語言(如 Python)進(jìn)行解析和操作。修改時需謹(jǐn)慎,並備份原始文件。

有三種將 XML 轉(zhuǎn)換為 Word 的方法:使用 Microsoft Word、使用 XML 轉(zhuǎn)換器或使用編程語言。

將 XML 轉(zhuǎn)換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進(jìn)行轉(zhuǎn)換;使用在線工具(如 XML 轉(zhuǎn)換為 JSON、Gojko's XML 轉(zhuǎn)換器、XML 在線工具)粘貼或上傳 XML 數(shù)據(jù)並選擇 JSON 格式輸出;使用 XML 到 JSON 轉(zhuǎn)換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉(zhuǎn)換任務(wù);使用 XSLT 樣式表將 XML 轉(zhuǎn)換為 JSON;使用數(shù)據(jù)集成工具(如 Informatic

C# 多線程編程是一種讓程序同時執(zhí)行多項(xiàng)任務(wù)的技術(shù),它可以通過提升性能、提高響應(yīng)能力和實(shí)現(xiàn)並行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結(jié)構(gòu)。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源洩漏,需要仔細(xì)設(shè)計(jì)線程模型和使用適當(dāng)?shù)耐綑C(jī)制來避免這些問題。

如何利用.NET構(gòu)建應(yīng)用?使用.NET構(gòu)建應(yīng)用可以通過以下步驟實(shí)現(xiàn):1)了解.NET基礎(chǔ)知識,包括C#語言和跨平臺開發(fā)支持;2)學(xué)習(xí)核心概念,如.NET生態(tài)系統(tǒng)的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應(yīng)用到復(fù)雜的WebAPI和數(shù)據(jù)庫操作;4)熟悉常見錯誤與調(diào)試技巧,如配置和數(shù)據(jù)庫連接問題;5)應(yīng)用性能優(yōu)化與最佳實(shí)踐,如異步編程和緩存。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
