Przejdź do treści stopki
POMOC .NET

Kolekcja C# (jak to działa dla programistów)

C# stał się popularną i wszechstronną opcją dla deweloperów wśród wielu dostępnych języków programowania. Koncepcja kolekcji stanowi rdzeń obszernej biblioteki i frameworków C#, co jest jedną z głównych zalet tego języka. W C#, kolekcja jest niezbędna do efektywnego przechowywania i organizowania danych. Dają deweloperom szeroki zakres skutecznych narzędzi do rozwiązywania trudnych problemów programistycznych. W tym artykule zagłębimy się dalej w kolekcje, omawiając ich cechy, typy i optymalne strategie użycia.

Jak używać kolekcji w C

  1. Utwórz nowy projekt aplikacji konsolowej.
  2. Utwórz obiekt dla kolekcji w C#.
  3. Dodaj wartości do klasy kolekcji, która może przechowywać wiele zestawów obiektów.
  4. Przetwarzaj operacje na wartościach, takie jak dodawanie, usuwanie, sortowanie, itd.
  5. Wyświetl wynik i usuń obiekt.

C#: Zrozumienie kolekcji

Kolekcje w C# to kontenery, które pozwalają programistom pracować z zestawami klas obiektów i przechowywać je. Te obiekty są elastyczne i dostosowują się do wielu środowisk programistycznych, a mogą być tego samego lub różnego rodzaju. Większość klas kolekcji implementuje komponenty przestrzeni nazw System w C#, co oznacza importowanie przestrzeni nazw takich jak System.Collections i System.Collections.Generic, które oferują różne klasy kolekcji zarówno generyczne, jak i niegeneryczne. Kolekcje umożliwiają także dynamiczne przydzielanie pamięci, dodawanie, wyszukiwanie i sortowanie elementów w ramach klas kolekcji.

Typy Kolekcji Nie-Generycznych

ArrayList, Hashtable i Queue to niektóre z dostępnych klas kolekcji nie-generycznych w C# wprowadzonych w pierwszych wersjach języka. Te kolekcje oferują alternatywę dla jawnego definiowania typów rzeczy, które chcesz przechowywać i z którymi pracować. Jednak deweloperzy często wybierają kolekcje generyczne ze względu na ich lepszą wydajność i bezpieczeństwo typów.

Kolekcje Generyczne

Późniejsze wersje C# wprowadziły kolekcje generyczne, aby pokonać wady kolekcji nie-generycznych. Zapewniają one bezpieczeństwo typom podczas kompilacji i pozwalają deweloperom pracować z ściśle typowanymi danymi. Kolekcje generyczne takie jak List, Dictionary<TKey, TValue>, Queue i Stack to niektóre z najczęściej używanych. Te kolekcje są główną opcją we współczesnym rozwoju C#, ponieważ oferują lepszą wydajność i weryfikację typów podczas kompilacji.

Kluczowe Typy Kolekcji C

1. List

Klasa List to dynamiczna tablica, która ułatwia szybkie i łatwe wstawianie oraz usuwanie elementów. Jest to elastyczna opcja w sytuacjach wymagających przeskalowania kolekcji, ponieważ oferuje sposoby na filtrowanie, wyszukiwanie i manipulację komponentami.

// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
' Creating a list with integers and adding/removing elements
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Add(6) ' Adds element '6' to the end
numbers.Remove(3) ' Removes the first occurrence of the element '3'
$vbLabelText   $csharpLabel

2. Dictionary<TKey, TValue>

Klasa Dictionary<TKey, TValue> reprezentuje kolekcję par klucz-wartość o szybkich szybkościach wyszukiwania. Często jest używana w sytuacjach, gdzie szybki dostęp do danych za pomocą unikalnej wartości klucza jest kluczowy. Ten klucz jest używany do uzyskiwania dostępu do elementów w słowniku.

// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
' Creating a dictionary mapping names to ages
Dim ageMap As New Dictionary(Of String, Integer)()
ageMap.Add("John", 25) ' The string "John" is the key that can access the value 25
ageMap("Jane") = 30 ' Setting the key "Jane" to hold the value 30
$vbLabelText   $csharpLabel

3. Queue i Stack

Kolekcje generyczne Queue i Stack implementują odpowiednio paradygmat pierwszy na wejściu, pierwszy na wyjściu (FIFO) oraz ostatni na wejściu, pierwszy na wyjściu (LIFO). Mogą być używane do zarządzania elementami w określonej kolejności w oparciu o potrzeby aplikacji.

// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
' Creating and manipulating a queue
Dim tasks As New Queue(Of String)()
tasks.Enqueue("Task 1") ' Adding to the queue
tasks.Enqueue("Task 2")

' Creating and manipulating a stack
Dim numbers As New Stack(Of Double)()
numbers.Push(3.14) ' Adding to the stack
numbers.Push(2.71)
$vbLabelText   $csharpLabel

4. HashSet

Klasa HashSet reprezentuje unikalne elementy ułożone w nieuporządkowanej kolekcji. Oferuje skuteczne sposoby wykonywania operacji na zbiorach, takich jak różnica, suma i część wspólna.

// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
' Creating hashsets and performing a union operation
Dim setA As New HashSet(Of Integer) From {1, 2, 3, 4}
Dim setB As New HashSet(Of Integer) From {3, 4, 5, 6}
Dim unionSet As New HashSet(Of Integer)(setA)
unionSet.UnionWith(setB) ' Combining setA and setB
$vbLabelText   $csharpLabel

IronPDF

Kolekcja C# (Jak Działa Dla Deweloperów): Rysunek 1 - Strona internetowa IronPDF

Biblioteka C# o nazwie IronPDF ułatwia tworzenie, edycję i wyświetlanie dokumentów PDF w aplikacjach .NET. Oferuje wiele opcji licencjonowania, kompatybilność międzyplatformową, wysoką jakość renderowania oraz konwersję HTML na PDF. Przyjazny dla użytkownika interfejs API IronPDF ułatwia obsługę plików PDF, czyniąc go cennym narzędziem dla deweloperów C#.

Wyjątkową cechą IronPDF jest jego konwersja HTML na PDF, która zachowuje wszystkie układy i style. Generuje pliki PDF z treści internetowych, czyniąc go idealnym do raportów, faktur oraz dokumentacji. Pliki HTML, adresy URL oraz łańcuchy HTML można łatwo konwertować na 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

Kluczowe funkcje IronPDF obejmują:

  • Konwersja HTML na PDF: Dzięki IronPDF, programiści mogą tworzyć dokumenty PDF z tekstu HTML, w tym CSS i JavaScript. To jest szczególnie przydatne dla tych, którzy są już zaznajomieni z narzędziami do tworzenia stron internetowych i chcą używać HTML i CSS do tworzenia dokumentów PDF.
  • Generowanie i Manipulacja PDF: Biblioteka umożliwia programowe tworzenie dokumentów PDF od podstaw. Dodatkowo ułatwia edytowanie istniejących dokumentów PDF, umożliwiając operacje takie jak ekstrakcja tekstu, dodawanie znaków wodnych, dzielenie PDF i więcej.
  • Najlepsza jakość renderowania: IronPDF używa silnika renderującego do generowania wyjścia PDF najwyższej jakości, zapewniając, że ostateczne dokumenty zachowują czytelność i integralność wizualną.
  • Kompatybilność międzyplatformowa: IronPDF jest zaprojektowany do działania z zarówno .NET Core, jak i .NET Framework, co pozwala na jego użycie w różnych aplikacjach i na wielu platformach.
  • Optymalizacja Wydajności: Nawet podczas pracy z dużymi lub skomplikowanymi dokumentami PDF, biblioteka jest zaprojektowana tak, aby zapewnić wydajne tworzenie i renderowanie dokumentów PDF.

Aby dowiedzieć się więcej o dokumentacji IronPDF, zapoznaj się z IronPDF Dokumentacja.

Instalacja IronPDF

Zainstaluj bibliotekę IronPDF najpierw używając Package Manager Console lub Menedżera Pakietów NuGet z:

Install-Package IronPdf

Kolekcja C# (Jak Działa Dla Deweloperów): Rysunek 2 - Instalacja IronPDF za pomocą Package Manager Console

Korzystanie z Menedżera Pakietów NuGet do wyszukiwania pakietu "IronPDF" jest dodatkową opcją. Możemy wybrać i pobrać niezbędny pakiet z tej listy spośród wszystkich pakietów NuGet związanych z IronPDF.

Kolekcja C# (Jak Działa Dla Deweloperów): Rysunek 3 - Instalacja IronPDF za pomocą Menedżera Pakietów NuGet

Tworzenie Dokumentów z Kolekcjami za pomocą IronPDF

Zrozumienie roli, jaką kolekcje odgrywają w strukturach danych i organizacji, jest kluczowe przed zanurzeniem się w interfejs z IronPDF. Deweloperzy mogą przechowywać, pobierać i modyfikować grupy rzeczy w zorganizowany sposób używając kolekcji. Dzięki wielu dostępnym typom, takim jak List, Dictionary<TKey, TValue> oraz HashSet, deweloperzy mogą wybrać kolekcję, która najlepiej spełnia ich wymagania.

Wyobraź sobie, że musisz stworzyć raport z listą transakcji sprzedaży. Dane mogą być efektywnie zorganizowane przy użyciu List, która służy jako podstawa do dalszego przetwarzania i wyświetlania.

// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
' Define the Transaction class
Public Class Transaction
	Public Property ProductName() As String
	Public Property Amount() As Decimal
	Public Property [Date]() As DateTime
End Class

' Create a list of transactions
Private transactions As New List(Of Transaction) From {
	New Transaction With {
		.ProductName = "Product A",
		.Amount = 100.50D,
		.Date = DateTime.Now.AddDays(-2)
	},
	New Transaction With {
		.ProductName = "Product B",
		.Amount = 75.20D,
		.Date = DateTime.Now.AddDays(-1)
	}
}
$vbLabelText   $csharpLabel

W PDF utworzymy prostą tabelę, w której dla każdej pozycji będzie podana nazwa produktu, kwota transakcji oraz data.

using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
Imports IronPdf

' Create a PDF document renderer
Private pdfDocument = New HtmlToPdf()

' HTML content with a table populated by data from the 'transactions' list
Private htmlContent As String = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>"
For Each transaction In transactions
	htmlContent &= $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>"
Next transaction
htmlContent &= "</table>"

' Convert HTML to PDF
Dim pdf As PdfDocument = pdfDocument.RenderHtmlAsPdf(htmlContent)

' Specify the file path to save the PDF
Dim pdfFilePath As String = "transactions_report.pdf"
pdf.SaveAs(pdfFilePath)
$vbLabelText   $csharpLabel

Deweloperzy mają możliwość zapisania dokumentu PDF na dysku lub pokazania go użytkownikom po jego stworzeniu. IronPDF oferuje kilka opcji wyjścia, w tym strumieniowanie do przeglądarki, zapisywanie pliku i integrację z chmurą.

Kolekcja C# (Jak Działa Dla Deweloperów): Rysunek 4 - Wyjściowy PDF z powyższego kodu

Powyższy ekran przedstawia wyjście wygenerowane z powyższego kodu. Aby dowiedzieć się więcej o kodzie, zapoznaj się z Przykład Tworzenia PDF za pomocą HTML.

Podsumowanie

Połączenie kolekcji z IronPDF umożliwia ogromne możliwości dynamicznej produkcji dokumentów. Deweloperzy mogą efektywnie zarządzać i organizować dane przy użyciu kolekcji, a IronPDF ułatwia tworzenie wizualnie pięknych dokumentów PDF. Połączona moc IronPDF i kolekcji oferuje niezawodne i elastyczne rozwiązanie dla dynamicznej produkcji treści w aplikacjach C#, niezależnie od rodzaju tworzonego dokumentu — faktur, raportów czy czegokolwiek innego.

Edycja Light IronPDF obejmuje roczną obsługę oprogramowania, opcje aktualizacji oraz stałą licencję. Użytkownicy otrzymują również możliwość ocenienia produktu w rzeczywistych warunkach podczas okresu próbnego z watermarkiem. Aby dowiedzieć się więcej o kosztach, licencjonowaniu i darmowej wersji próbnej IronPDF, proszę odwiedź IronPDF Informacje o Licencjonowaniu. Aby uzyskać więcej informacji o Iron Software, przejdź do Strona internetowa Iron Software.

Często Zadawane Pytania

Czym sa kolekcje w C# i dlaczego sa one wazne?

Kolekcje w C# sa niezbedne do przechowywania danych i organizacji, udostepniajac programistom narzedzia do efektywnego radzenia sobie z wyzwaniami programowania. Pozwalaja na dynamiczne przydzialy pamieci i latwa manipulacje zestawami danych.

Jakie sa roznice miedzy kolekcjami niegenerycznymi a generycznymi w C#?

Kolekcje niegeneryczne, takie jak ArrayList i Hashtable, sa mniej bezpieczne typowo i moga przechowywac dowolny typ obiektu. Kolekcje generyczne, takie jak List i Dictionary, zapewniaja bezpieczenstwo typow i zwiekszona wydajnosc, wymuszajac zgodnosc typow danych.

Jak stworzyc liste generyczna w C#?

Liste generyczna w C# mozna utworzyc przy uzyciu klasy List. Na przyklad, liste liczb calkowitych mozna stworzyc za pomoca List numbers = new List { 1, 2, 3 };.

Jak mogę przekonwertować HTML na PDF w języku C#?

Mozesz uzyc metody RenderHtmlAsPdf z IronPDF, aby konwertowac ciagi HTML na PDF. Wspiera rowniez konwertowanie plikow HTML i URL na dokumenty PDF, zachowujac integralnosc ukladki i stylu.

Jakie sa najlepsze praktyki uzywania kolekcji w C#?

Najlepsze praktyki dla uzywania kolekcji w C# obejmuja wybieranie wlasciwego typu kolekcji dla Twoich potrzeb, takich jak uzycie Dictionary dla par klucz-wartosc oraz List dla uporzadkowanych list, oraz zapewnienie wlasciwego zarzadzania pamiecia poprzez usuwanie kolekcji, gdy nie sa juz potrzebne.

Jak kolekcje moga wzbogacic tworzenie PDF w aplikacjach C#?

Kolekcje moga efektywnie organizowac dane do tworzenia dokumentow. Na przyklad, uzycie List do kompilacji danych sprzedazy moze ulatwic tworzenie kompleksowych raportow PDF przy uzyciu IronPDF, usprawniajac zarzadzanie danymi i prezentacje.

Jakie opcje licencyjne są dostępne dla IronPDF?

IronPDF oferuje licencje Lite z rokiem wsparcia i aktualizacjami oraz wersje probna z watermarkiem do oceny. Te opcje pozwalaja programistom testowac i implementowac mozliwosci IronPDF w ich projektach.

Jak zainstalować IronPDF w projekcie .NET?

Mozesz zainstalowac IronPDF w projekcie .NET uzywajac Menedzera Pakietow NuGet za pomoca polecenia Install-Package IronPdf. Alternatywnie, mozesz wyszukac 'IronPDF' w Menedzerze Pakietow NuGet, aby dodac go do projektu.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie