.NET幫助 C# 陣列排序(開發者的工作原理) Curtis Chau 更新日期:7月 28, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 陣列在C#編程中扮演著至關重要的角色,提供了一種便利的方法來存儲和操作數據集合。 處理陣列時的一個基本操作是排序,本文將探索在C#中創建排序陣列的多種方法。 到最後,您不僅會了解陣列排序的基本知識,還會發現如何利用C#提供的強大排序功能。 理解陣列的基礎知識 在深入排序之前,讓我們重溫C#中陣列的基本知識。 陣列是相同數據類型的元素集合,存儲在連續的記憶位置中。 它們提供在使用索引表記法時高效訪問元素的能力。 最簡單的方法:Array.Sort() C#通過指定的陣列方法Sort()簡化了陣列的排序。 此方法多功能,可與各種數據類型的陣列元素一起使用。以下是一個一維陣列的快速示例: int[] numbers = { 5, 2, 8, 1, 7 }; Array.Sort(numbers); int[] numbers = { 5, 2, 8, 1, 7 }; Array.Sort(numbers); Dim numbers() As Integer = { 5, 2, 8, 1, 7 } Array.Sort(numbers) $vbLabelText $csharpLabel 上述代碼將按升序排序陣列元素,使其為{ 1, 2, 5, 7, 8 }。 使用IComparer進行自定義排序 雖然Array.Sort()方法適用於簡單場景,但您可能會遇到需要自定義排序順序的情況。 這就是IComparer接口派上用場的地方。 通過實現此接口,您可以定義用於排序陣列的比較邏輯。 using System.Collections; class CustomComparer : IComparer { public int Compare(object x, object y) { int a = (int)x; int b = (int)y; // Compare a and b to order them descending return b.CompareTo(a); } } int[] numbers = { 5, 2, 8, 1, 7 }; Array.Sort(numbers, new CustomComparer()); using System.Collections; class CustomComparer : IComparer { public int Compare(object x, object y) { int a = (int)x; int b = (int)y; // Compare a and b to order them descending return b.CompareTo(a); } } int[] numbers = { 5, 2, 8, 1, 7 }; Array.Sort(numbers, new CustomComparer()); Imports System.Collections Friend Class CustomComparer Implements IComparer Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare Dim a As Integer = DirectCast(x, Integer) Dim b As Integer = DirectCast(y, Integer) ' Compare a and b to order them descending Return b.CompareTo(a) End Function End Class Private numbers() As Integer = { 5, 2, 8, 1, 7 } Array.Sort(numbers, New CustomComparer()) $vbLabelText $csharpLabel 排序對象:IComparable和IComparer 排序自定義對象的陣列需要實現IComparable接口或使用IComparer進行對象排序。 這使排序算法可以理解您的對象的比較規則。 以下代碼演示了根據年齡排序Person對象陣列的邏輯: using System; class Person : IComparable<Person> { public string Name { get; set; } public int Age { get; set; } public int CompareTo(Person other) { // Compare Persons by age return this.Age.CompareTo(other.Age); } } // Array of people Person[] people = { new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 25 } }; // Sort by age Array.Sort(people); using System; class Person : IComparable<Person> { public string Name { get; set; } public int Age { get; set; } public int CompareTo(Person other) { // Compare Persons by age return this.Age.CompareTo(other.Age); } } // Array of people Person[] people = { new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 25 } }; // Sort by age Array.Sort(people); Imports System Friend Class Person Implements IComparable(Of Person) Public Property Name() As String Public Property Age() As Integer Public Function CompareTo(ByVal other As Person) As Integer Implements IComparable(Of Person).CompareTo ' Compare Persons by age Return Me.Age.CompareTo(other.Age) End Function End Class ' Array of people Private people() As Person = { New Person With { .Name = "Alice", .Age = 30 }, New Person With { .Name = "Bob", .Age = 25 } } ' Sort by age Array.Sort(people) $vbLabelText $csharpLabel Array.Reverse(): 反轉順序 排序陣列後,您可能需要反轉順序。 C#提供Array.Reverse()方法專門用於此目的。 int[] numbers = { 1, 2, 3, 4, 5 }; Array.Reverse(numbers); int[] numbers = { 1, 2, 3, 4, 5 }; Array.Reverse(numbers); Dim numbers() As Integer = { 1, 2, 3, 4, 5 } Array.Reverse(numbers) $vbLabelText $csharpLabel 現在,numbers陣列將為{ 5, 4, 3, 2, 1 }。 利用LINQ 對於那些更喜歡更具聲明性風格來排序陣列的人,可以使用LINQ(語言集成查詢)來排序陣列。 OrderBy方法可用於升序排序,而OrderByDescending方法可用於降序排序。 這些方法提供了一種簡潔的方式來達到排序目的。 以下示例使用了LINQ查詢語法: using System.Linq; int[] numbers = { 5, 2, 8, 1, 7 }; var sortedNumbers = numbers.OrderBy(x => x).ToArray(); using System.Linq; int[] numbers = { 5, 2, 8, 1, 7 }; var sortedNumbers = numbers.OrderBy(x => x).ToArray(); Imports System.Linq Private numbers() As Integer = { 5, 2, 8, 1, 7 } Private sortedNumbers = numbers.OrderBy(Function(x) x).ToArray() $vbLabelText $csharpLabel 介绍 IronPDF 了解更多關於IronPDF是一個強大的C#庫,簡化了從HTML創建、修改和操作PDF文檔的過程。 無論您是生成報告、發票還是任何其他動態內容,IronPDF都提供了一個無縫的解決方案,允許您利用C#的力量來完成與PDF相關的任務。 IronPDF將網頁和HTML轉換為PDF,保留原始格式。 它無縫集成到.NET項目中,讓開發者能夠自動生成PDF並改善工作流程。 using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' 1. Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' 2. Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' 3. Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel 安裝IronPDF:快速入門 要在您的C#項目中開始使用IronPDF,只需輕鬆安裝IronPDF NuGet包。 在您的包管理器控制台中使用以下命令: Install-Package IronPdf 或者,您可以在NuGet程序包管理器中搜索"IronPDF"並從那裡安裝。 使用IronPDF生成PDF 使用IronPDF創建PDF非常簡單。 讓我們考慮一個簡單的例子,我們通過HTML字符串使用IronPDF創建PDF: var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"; // Create a new PDF document var pdfDocument = new IronPdf.ChromePdfRenderer(); pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf"); var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"; // Create a new PDF document var pdfDocument = new IronPdf.ChromePdfRenderer(); pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf"); Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>" ' Create a new PDF document Dim pdfDocument = New IronPdf.ChromePdfRenderer() pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf") $vbLabelText $csharpLabel 在此示例中,我們使用IronPDF將HTML內容渲染為PDF文檔。 生成的PDF,"GeneratedDocument.pdf",將保存在指定位置。 有關如何生成PDF的更多詳細信息,請造訪IronPDF文檔頁面。 使用IronPDF進行陣列排序 現在,問題出現了:我們之前探索的陣列排序技術可以無縫集成到IronPDF中嗎? 答案是肯定的。 考慮一個情況:您有一個要在PDF中以表格格式顯示的數據陣列。 您可以利用陣列排序在生成PDF之前組織數據,確保輸出更有結構和便於使用。 using System.Linq; // Sample array of data string[] names = { "Alice", "Charlie", "Bob", "David" }; // Sorting the array alphabetically Array.Sort(names); // Generating PDF content with sorted data var sortedPdfContent = $@" <html> <body> <h1>Sorted Names</h1> <ul> {string.Join("", names.Select(name => $"<li>{name}</li>"))} </ul> </body> </html> "; // Create a new PDF document with sorted data var sortedPdfDocument = new IronPdf.ChromePdfRenderer(); sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf"); using System.Linq; // Sample array of data string[] names = { "Alice", "Charlie", "Bob", "David" }; // Sorting the array alphabetically Array.Sort(names); // Generating PDF content with sorted data var sortedPdfContent = $@" <html> <body> <h1>Sorted Names</h1> <ul> {string.Join("", names.Select(name => $"<li>{name}</li>"))} </ul> </body> </html> "; // Create a new PDF document with sorted data var sortedPdfDocument = new IronPdf.ChromePdfRenderer(); sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf"); Imports System.Linq ' Sample array of data Private names() As String = { "Alice", "Charlie", "Bob", "David" } ' Sorting the array alphabetically Array.Sort(names) ' Generating PDF content with sorted data , String.Join(TangibleTstring.Format(mpVerbatimDoubleQuote, names.Select(Function(name) $TangibleTempVerbatimCloseTag"<li>{name}</li>")), TangibleStringInterpolationMarker)var sortedPdfContent = $"TangibleTempVerbatimOpenTagTangibleTempVerbatimStringLiteralLineJoin <html>TangibleTempVerbatimStringLiteralLineJoin <body>TangibleTempVerbatimStringLiteralLineJoin <h1>Sorted Names</h1>TangibleTempVerbatimStringLiteralLineJoin <ul>TangibleTempVerbatimStringLiteralLineJoin {0}ignoreignoreignoreignoreignore</ul></body></html>" ' Create a new PDF document with sorted data Dim sortedPdfDocument = New IronPdf.ChromePdfRenderer() sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf") $vbLabelText $csharpLabel 在此示例中,名字的陣列在整合到HTML內容之前是按字母順序排序的。 生成的PDF,"SortedNames.pdf",將以排序順序顯示名字。 結論 總之,在C#中掌握陣列排序對高效數據操作至關重要。 無論您是處理簡單的數字陣列還是複雜的對象,C#都提供了各種工具來滿足您的排序需求。 通過了解Array.Sort()的基礎知識、使用IComparer進行自定義排序以及利用LINQ提供更具表達力的方法,您可以高效且得體地處理您的C#項目中的陣列。 將IronPDF集成到C#項目中不僅提供了一個強大的PDF生成工具,而且還允許將陣列排序無縫集成到文檔創建工作流中。 無論您是在組織表格數據還是創建動態報告,陣列排序與IronPDF的協同作用使您能夠提升C#中的文檔生成能力。 因此,利用C#陣列排序的力量,提升您的編程水平! IronPDF提供免費試用許可證以測試其完整的商業用途功能。 其永久商業許可證從$799開始。 常見問題解答 如何在 C# 中排序數組? 您可以使用 Array.Sort() 方法在 C# 中對數組進行排序。此內建方法會以升序排列數組中的元素,並且在各種數據類型中都具有通用性。 C# 中有哪些可用於自定義排序的方法? C# 中的自定義排序可以通過實作 IComparer 介面來實現。這使您可以定義特定的比較邏輯以對元素進行排序,對於需要處理自定義物件時非常有用。 IComparable 介面如何協助排序數組? IComparable 介面允許物件與其他物件進行比較,這對於排序非常有用。透過實作此介面,您可以定義特定類別的物件應如何被比較。 C# 中的數組可以反轉嗎? 是的,C# 中的數組可以使用 Array.Reverse() 方法反轉。此方法能高效地反轉數組中元素的順序。 如何在 C# 中利用 LINQ 進行排序? LINQ 提供了一種聲明性方法來對 C# 中的數組進行排序。您可以使用 OrderBy 方法以升序排序,以及使用 OrderByDescending 以降序排序。 將 PDF 庫與數組排序結合使用有什麼好處? 使用像 IronPDF 這樣的 PDF 庫可以在生成 PDF 之前對數據進行排序,確保輸出是有組織結構的,這對於創建動態報告或表格特別有用。 如何將 PDF 庫集成到我的 C# 項目中? 您可以通過在 NuGet 包管理器控制台中使用指令 Install-Package IronPdf 或在 NuGet 包管理器中搜索來將像 IronPDF 這樣的 PDF 庫集成到您的 C# 項目中。 排序後的數組能否用於 PDF 文件生成? 是的,排序後的數組經常用於 PDF 文件生成以按照邏輯順序呈現數據。這可以包括組織表格或清單以提高最終 PDF 的可讀性和結構性。 是否有可用於測試 PDF 庫的免費試用版? 是的,IronPDF 提供免費的試用版授權,允許您在購買永久授權之前測試其功能和商業用途。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 更新日期 9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新日期 9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 更新日期 8月 5, 2025 C#開關模式匹配(對開發者來說是如何工作的) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 C# Yield Return(開發者的工作原理)Jquery Datatable(開發者的工...