.NET 幫助

C# 資料結構(開發人員的運作方式)

發佈 2024年4月3日
分享:

資料結構在任何程式語言中,資料結構對於軟體開發都是關鍵的,有助於在應用程式中整齊有效地儲存和處理數據。 資料結構在有效組織和管理數據中扮演著重要角色。

在 C# 中,如同許多程式語言一樣,理解資料結構的使用對於創建高效、可擴展且易於維護的軟體至關重要。 本指南將向您介紹 C# 中資料結構的基礎知識及初學者友好的範例。 我們還將了解有關IronPDF 文件在 ironpdf.com 上及其在本文後面的潛在用途。

基本資料結構及其用途

在任何應用程式中,資料結構是其基本要素,提供結構化的資料存儲,滿足各種操作需求。 選擇合適的數據結構可以顯著影響應用程式的性能和記憶體效率。

陣列:資料組織的基礎

陣列是 C# 中最基本且最廣泛使用的資料結構之一。 它們將相同數據類型的元素存儲在連續的內存位置中,允許通過索引高效訪問元素。 數組在元素數量事先已知且不會改變的情況下是理想的選擇。

int[] numbers = new int[5] {1, 2, 3, 4, 5};
int[] numbers = new int[5] {1, 2, 3, 4, 5};
Dim numbers() As Integer = {1, 2, 3, 4, 5}
VB   C#

透過其索引存取元素,陣列使我們能夠輕鬆地檢索資料,初始項目位於索引 0。例如,numbers[0] 會訪問 numbers 陣列的第一個元素,即 1

列表:動態資料集合

與數組不同,C# 中的列表提供動態調整大小的功能,這使得它們適合用於元素數量可能隨時間變化的情況。C# 支援各種數據類型,並通過像列表這樣的數據結構,允許進行類型安全的存儲。

List<int> numbers = new List<int> {1, 2, 3, 4, 5};
numbers.Add(6); // Adding a new element to the list
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
numbers.Add(6); // Adding a new element to the list
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Add(6) ' Adding a new element to the list
VB   C#

列表是多功能的,幫助您自由添加、移除和訪問元素,而不用擔心底層數據的大小。

字典:鍵值對應关系

字典以鍵值對的形式存儲關聯,使其非常適合需要基於唯一鍵訪問值的情境。 這在管理使用者會話、配置或任何需要根據鍵進行查找的情況中特別有用。

Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 30);
ages.Add("Bob", 25);
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 30);
ages.Add("Bob", 25);
Dim ages As New Dictionary(Of String, Integer)()
ages.Add("Alice", 30)
ages.Add("Bob", 25)
VB   C#

在這個例子中,每個人的名字都與他們的年齡相關聯,這樣可以根據名字快速查詢個人的年齡。

棧和佇列:管理集合

堆疊操作遵循後進先出原則(後進先出)原則,使其非常適合需要先存取最新添加元素的集合管理,例如在撤銷機制或任務調度系統中。

Stack<string> books = new Stack<string>();
books.Push("Book 1");
books.Push("Book 2");
string lastAddedBook = books.Pop(); // Removes and returns "Book 2"
Stack<string> books = new Stack<string>();
books.Push("Book 1");
books.Push("Book 2");
string lastAddedBook = books.Pop(); // Removes and returns "Book 2"
Dim books As New Stack(Of String)()
books.Push("Book 1")
books.Push("Book 2")
Dim lastAddedBook As String = books.Pop() ' Removes and returns "Book 2"
VB   C#

另一方面,佇列以先進先出方式運作。(先入先出)基礎。 它們在打印機任務排程或處理客戶服務請求等情境中非常有用。

Queue<string> customers = new Queue<string>();
customers.Enqueue("Customer 1");
customers.Enqueue("Customer 2");
string firstCustomer = customers.Dequeue(); // Removes and returns "Customer 1"
Queue<string> customers = new Queue<string>();
customers.Enqueue("Customer 1");
customers.Enqueue("Customer 2");
string firstCustomer = customers.Dequeue(); // Removes and returns "Customer 1"
Dim customers As New Queue(Of String)()
customers.Enqueue("Customer 1")
customers.Enqueue("Customer 2")
Dim firstCustomer As String = customers.Dequeue() ' Removes and returns "Customer 1"
VB   C#

鏈結串列:自訂資料結構

鏈結串列由包含數據的節點以及指向序列中下一個節點的參考組成,使元素的插入和移除變得高效。 它們在經常需要操控單個元素的應用程式中尤其有用,例如社交媒體應用程式中的聯絡人列表。

public class Node
{
    public int data;
    public Node next;
    public Node(int d) { data = d; next = null; }
}
public class LinkedList
{
    public Node head;
    public void Add(int data)
    {
        Node newNode = new Node(data);
        newNode.next = head;
        head = newNode;
    }
    public void Display()
    {
        Node current = head;
        while (current != null)
        {
            Console.WriteLine(current.data);
            current = current.next;
        }
    }
}
public class Node
{
    public int data;
    public Node next;
    public Node(int d) { data = d; next = null; }
}
public class LinkedList
{
    public Node head;
    public void Add(int data)
    {
        Node newNode = new Node(data);
        newNode.next = head;
        head = newNode;
    }
    public void Display()
    {
        Node current = head;
        while (current != null)
        {
            Console.WriteLine(current.data);
            current = current.next;
        }
    }
}
Public Class Node
	Public data As Integer
	Public [next] As Node
	Public Sub New(ByVal d As Integer)
		data = d
		[next] = Nothing
	End Sub
End Class
Public Class LinkedList
	Public head As Node
	Public Sub Add(ByVal data As Integer)
		Dim newNode As New Node(data)
		newNode.next = head
		head = newNode
	End Sub
	Public Sub Display()
		Dim current As Node = head
		Do While current IsNot Nothing
			Console.WriteLine(current.data)
			current = current.next
		Loop
	End Sub
End Class
VB   C#

樹和圖:複雜的資料結構

樹(例如二元樹)以層次結構的方式組織數據,使得搜尋、插入和刪除等操作能夠高效地執行。 例如,二叉樹是實現二元搜尋和廣度優先搜尋等演算法的基礎。

圖形,由節點組成(頂點)和邊緣(連接),用於表示網路,如社交圖譜或交通地圖。 樹和圖形在解決涉及層次數據或網絡關係的複雜問題中都很重要。

選擇正確的資料結構

選擇數據結構會顯著影響應用程式的效率和性能。 這不僅僅是選擇任何數據結構; 這是關於識別適合您任務或算法特定需求的正確選擇。

這個選擇受到多種因素的影響,包括您最常需要執行的操作類型。(例如搜尋、插入或刪除資料)這些操作的速度和記憶體使用量。

選擇資料結構的標準

  1. 操作複雜度:考慮您需要多快地執行常見操作。 例如,如果需要經常根據鍵訪問元素,可以使用哈希表(在 C# 中實現為 Dictionary)可能是最有效率的選擇。

  2. 記憶體效率:評估資料結構消耗的記憶體量,特別是在處理大量資料時。 像鏈結串列這樣的結構,因為不會為未使用的元素分配記憶體,所以在某些操作上比陣列更具記憶體效率。

  3. 易於實施:某些資料結構可能為您的特定使用案例提供更簡單的實施方法。 例如,如果您需要經常從一端添加和移除元素,使用 StackQueue 可能比 LinkedList 更簡單易懂。

  4. 資料大小及可擴展性:考慮您的資料大小是固定的還是動態的。 陣列適合固定大小的數據集合,而列表或鏈結列表則更適合需要動態增長或縮減的數據集合。

IronPDF 介紹:C# PDF 庫

C# 資料結構(開發人員如何使用):圖 1

進階 IronPDF 功能是一個全面的程式庫,專為開發人員在 .NET 應用程式中創建、編輯和提取 PDF 內容而設計。 它提供了一種簡單的方法來轉換使用 IronPDF 將 HTML 轉換為 PDF助於創建像素完美的PDF。

憑藉其多樣化的功能集,開發人員可以輕鬆實現複雜的 PDF 功能。 IronPDF 簡化了 PDF 操作過程,並在 C# 專案中增強了文件管理的效率。

範例:從數據列表生成 PDF

考慮一個情況,您需要從客戶姓名和電子郵件列表中生成報告。 首先,您將數據結構化為自定義類別的List,即Customer,然後使用IronPDF從此列表創建PDF文件。

using IronPdf;
using System.Collections.Generic;
public class Customer
{
    public string Name { get; set; }
    public string Email { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        // Create a list of customers
        List<Customer> customers = new List<Customer>
        {
            new Customer { Name = "Alice Johnson", Email = "alice@example.com" },
            new Customer { Name = "Bob Smith", Email = "bob@example.com" }
        };
        // Initialize the HTML to PDF converter
        var renderer = new ChromePdfRenderer();
        // Generate HTML content from the list of customers
        var htmlContent = "<h1>Customer List</h1><ul>";
        foreach (var customer in customers)
        {
            htmlContent += $"<li>{customer.Name} - {customer.Email}</li>";
        }
        htmlContent += "</ul>";
        // Convert HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdf.SaveAs("CustomerList.pdf");
    }
}
using IronPdf;
using System.Collections.Generic;
public class Customer
{
    public string Name { get; set; }
    public string Email { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        // Create a list of customers
        List<Customer> customers = new List<Customer>
        {
            new Customer { Name = "Alice Johnson", Email = "alice@example.com" },
            new Customer { Name = "Bob Smith", Email = "bob@example.com" }
        };
        // Initialize the HTML to PDF converter
        var renderer = new ChromePdfRenderer();
        // Generate HTML content from the list of customers
        var htmlContent = "<h1>Customer List</h1><ul>";
        foreach (var customer in customers)
        {
            htmlContent += $"<li>{customer.Name} - {customer.Email}</li>";
        }
        htmlContent += "</ul>";
        // Convert HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdf.SaveAs("CustomerList.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic
Public Class Customer
	Public Property Name() As String
	Public Property Email() As String
End Class
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		License.LicenseKey = "License-Key"
		' Create a list of customers
		Dim customers As New List(Of Customer) From {
			New Customer With {
				.Name = "Alice Johnson",
				.Email = "alice@example.com"
			},
			New Customer With {
				.Name = "Bob Smith",
				.Email = "bob@example.com"
			}
		}
		' Initialize the HTML to PDF converter
		Dim renderer = New ChromePdfRenderer()
		' Generate HTML content from the list of customers
		Dim htmlContent = "<h1>Customer List</h1><ul>"
		For Each customer In customers
			htmlContent &= $"<li>{customer.Name} - {customer.Email}</li>"
		Next customer
		htmlContent &= "</ul>"
		' Convert HTML to PDF
		Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF document
		pdf.SaveAs("CustomerList.pdf")
	End Sub
End Class
VB   C#

在這個例子中,IronPDF 與 List 密切合作**資料結構,展示該庫將結構化的C#資料轉換成專業品質的PDF文件的能力。

C# 資料結構(開發人員如何使用):圖2

結論

C# 資料結構(對開發者的工作方式):圖 3

總之,選擇最佳的資料結構是軟體開發中的關鍵步驟。 對於開發人員來說,了解這些結構及其實際應用是至關重要的。 此外,對於那些在 .NET 項目中尋求 PDF 生成和操作的人來說,IronPDF 提供了一個強大的解決方案。IronPDF 免費試用從 $749 開始,提供適合各種開發需求的多種功能。

< 上一頁
C# 絕對值(開發人員如何使用)
下一個 >
C# 中的日期時間對象(開發人員如何使用)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >