Przejdź do treści stopki
POMOC .NET

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

C# stal sie popularna i elastyczna opcja dla programistów wsrod wielu dostępnych języków programowania. Koncepcja kolekcji jest rdzeniem rozleglej biblioteki i frameworkow C#, co jest jedna z głównych zalet języka. W C#, kolekcja jest niezbędna do efektywnego przechowywania i organizowania danych. Daja programistom szeroki zakres skutecznych narzędzi do rozwiazywania trudnych problemow programistycznych. Zaglebimy sie dalej w temat kolekcji w tym artykułe, omawiajac ich cechy, typy i optymalne strategie użytkowania.

Jak korzystać z kolekcji C

  1. Utwórz nowy projekt aplikacji konsolowej.
  2. Utworz obiekt dla kolekcji w C#.
  3. Dodaj wartosci do klasy kolekcji, która może przechowywać wiele zestawow obiektow.
  4. Przetwarzaj operacje na wartosciach, takie jak dodawanie, usuwanie, sortowanie itp.
  5. Wyświetl wynik i zwolnij obiekt.

C#: Zrozumienie kolekcji

Kolekcje w C# to kontenery, ktore pozwalają programistom pracowac z zestawami klas obiektow i je przechowywać. Te obiekty sa elastyczne i dostosowują sie do wielu srodowisk programistycznych, a mogą być tego samego lub różnego rodzaju. Wiekszosc klas kolekcji implementuje komponenty przestrzeni nazw System w C#, co oznacza importowanie przestrzeni nazw takich jak System.Collections i System.Collections.Generic, ktore oferuja różne klasy kolekcji, zarowno generyczne, jak i niegeneryczne. Kolekcje umożliwiaja również dynamiczne przydzielanie pamięci, dodawanie, szukanie i sortowanie elementow w klasach kolekcji.

Niegeneryczne typy kolekcji

ArrayList, Hashtable i Queue to kilka z dostępnych klas niegenerycznych kolekcji w C#, ktore zostaly wprowadzone w pierwszych wersjach języka. Te kolekcje oferuja alternatywe dla jawnego definiowania typow rzeczy, ktore chcemy przechowywać i z kim pracowac. Jednakze deweloperzy często wybieraja kolekcje generyczne ze wzgledu na ich wyzsza wydajność i bezpieczeństwo typow.

Kolekcje generyczne

Pozniejsze wersje C# wprowadzily kolekcje generyczne, aby przezwyciezyc wady kolekcji niegenerycznych. Zapewniaja one bezpieczeństwo typow w czasie kompilacji i pozwalają programistom radzic sobie z danymi o scisle okreslonym typie. Klasy kolekcji ogólnych List, Dictionary<TKey, TValue>, Queue i Stack to tylko niektóre z często używanych. Te kolekcje sa wyborem numer jeden we wspolczesnym rozwoju C#, poniewaz zapewniają lepsza wydajność i weryfikacje typow w czasie kompilacji.

Kluczowe typy kolekcji C

1. List

Tablica dynamiczna, która ułatwia szybkie i łatwe wstawianie oraz usuwanie elementów, to klasa List. Jest to elastyczna opcja dla sytuacji wymagajacych rozszerzalnej kolekcji, poniewaz oferuje sposoby filtrowania, wyszukiwania i manipulowania skladnikami.

// 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 kolekcje par klucz-wartosc z szybkim czasem wyszukiwania. Jest często stosowana w sytuacjach, gdzie szybki dostep do danych przez unikalna wartosc klucza jest kluczowy. Ten klucz jest używany do dostepu do elementow w slowniku.

// 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

Kolejki wchodzące pierwsze, wychodzące pierwsze (FIFO) oraz ostatnie wchodzące, pierwsze wychodzące (LIFO) są zaimplementowane odpowiednio przez klasy generyczne Queue i Stack. Mogą być wykorzystywane do zarządzania elementami w okreslonej kolejnosci w zależności od potrzeb 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

Unikalne elementy ułożone w nieuporządkowaną kolekcję są reprezentowane przez klasę HashSet. Oferuje skuteczne sposoby wykonywania operacji na zbiorach, takich jak roznica, suma i przeciecie.

// 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 to działa dla deweloperów): Rysunek 1 - Strona internetowa IronPDF

Biblioteka C# o nazwie IronPDF ułatwia tworzenie, edytowanie i wyswietlanie dokumentów PDF w aplikacjach .NET. Oferuje wiele opcji licencjonowania, zgodność wielopłatformowa, wysokiej jakosci renderowanie oraz konwersje HTML do PDF. Przyjazne dla użytkownika API IronPDF ułatwia obsługę plików PDF, co czyni go cennym narzędziem dla programistów C#.

Wyjatkowa cecha IronPDF jest konwersja HTML do PDF, która zachowuje wszystkie uklady i style. Generuje pliki PDF na podstawie treści internetowych, dzięki czemu idealnie nadaje się do tworzenia raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi znaków HTML można bez trudu konwertować do formatu 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

Glowne funkcje IronPDF obejmuja:

  • Konwertowanie HTML do PDF: Z IronPDF, programisci mogą tworzyć dokumenty PDF z tekstu HTML, włącznie z CSS i JavaScript. Jest to szczegółnie przydatne dla tych, ktorzy juz znaja narzędzia do tworzenia stron internetowych i chca używać HTML i CSS do tworzenia plików PDF.
  • Tworzenie i manipulacja plikami PDF: Biblioteka umożliwia programistyczne tworzenie dokumentów PDF od podstaw. Dodatkowo, wspiera edytowanie istniejących PDF-ow, umożliwiajac operacje, takie jak wyciaganie tekstu, dodawanie znakow wodnych, dzielenie plików PDF i inne.
  • Doskonale Renderowanie: IronPDF używa silnika renderowania do generowania wyniku PDF najwyzszej jakosci, zapewniając, ze koncowe dokumenty zachowuja wyrazistosc i integralnosc wizualna.
  • Zgodnosc Wielopłatformowa: IronPDF jest zaprojektowany do pracy zarowno z .NET Core, jak i .NET Framework, co pozwala na jego użycie w różnych aplikacjach i na różnym oprogramowaniu.
  • Optymalizacja Wydajnosci: Nawet przy pracy z duzymi lub skomplikowanymi dokumentami PDF, biblioteka jest zaprojektowana do efektywnej produkcji i renderowania PDF.

Aby dowiedziec sie więcej o dokumentacji IronPDF, odwiedz Dokumentacja IronPDF.

Instalacja IronPDF

Najpierw zainstaluj biblioteke IronPDF korzystając z Package Manager Console lub NuGet Package Manager z:

Install-Package IronPdf

Kolekcja C# (Jak to działa dla deweloperów): Rysunek 2 - Instalowanie IronPDF za pomocą Konsoli Menedżera Pakietów

Uzywanie NuGet Package Manager do wyszukiwania pakietu "IronPDF" to dodatkowa opcja. Możemy wybrac i pobrac odpowiedni pakiet z tej listy ze wszystkich pakietow NuGet powiazanych z IronPDF.

Kolekcja C# (Jak to działa dla deweloperów): Rysunek 3 - Instalowanie IronPDF z Menedżerem Pakietów NuGet

Tworzenie dokumentów z kolekcjami za pomoca IronPDF

Zrozumienie roli, jaka kolekcje odgrywaja w strukturach danych i organizacji jest kluczowe, zanim zanurzymy sie w integracje z IronPDF. Programisci mogą przechowywać, pobierac i modyfikowac grupy obiektow w zorganizowany sposob korzystając z kolekcji. Z tyloma różnymi typami dostępnymi, jak List, Dictionary<TKey, TValue> i HashSet, deweloperzy mogą wybrać kolekcję, która najlepiej odpowiada ich wymaganiom.

Wyobraz sobie, ze musisz stworzyć raport zawierajacy liste transakcji sprzedaży. Dane mogą być efektywnie zorganizowane korzystając z List, która sluzy jako podstawa dla dalszego przetwarzania i wyswietlania.

// 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 prosta tabele, która zawiera nazwe produktu, kwote transakcji i date dla kazdego przypadku.

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

Programisci maja możliwość zapisania dokumentu PDF na dysku lub pokazania go użytkownikom zaraz po jego utworzeniu. IronPDF oferuje kilka opcji wyjscia, takich jak streamowanie do przeglądarki, zapisywanie do pliku i integracja z przechowywaniem w chmurze.

Kolekcja C# (Jak to działa dla deweloperów): Rysunek 4 - Wyjściowy PDF z poprzedniego kodu

Powyzej pokazano wyjscie generowane z powyzszego kodu. Aby dowiedziec sie więcej o tym kodzie, odwiedz Przyklad tworzenia PDF z HTML.

Wnioski

Połączenie kolekcji z IronPDF umożliwia ogrom możliwości tworzenia dynamicznych dokumentów. Programisci mogą skutecznie zarządzać i organizowac dane, korzystając z kolekcji, a IronPDF ułatwia tworzenie dokumentów PDF o wspanialym wygladzie. Laczone możliwości IronPDF i kolekcji oferuja niezawodne i elastyczne rozwiązanie dla dynamicznego tworzenia treści w aplikacjach C#, niezależnie od rodzaju tworzonego dokumentu — faktury, raporty czy cokolwiek innego.

Edycja $999 Lite IronPDF zawiera rok wsparcia oprogramowania, opcje aktualizacji i licencję wieczystą. Uzytkownicy również maja możliwość oceny produktu w rzeczywistych warunkach podczas okresu próbnego z znakiem wodnym. Aby dowiedziec sie więcej o kosztach, licencjonowaniu i bezpłatnym okresie próbnym IronPDF, uprzejmie odwiedz Informacje o licencjonowaniu IronPDF. Aby uzyskać więcej informacji o Iron Software, odwiedz Strona Iron Software.

Często Zadawane Pytania

Czym sa kolekcje w C# i dlaczego sa one ważne?

Kolekcje w C# sa niezbędne do przechowywania danych i organizacji, udostepniajac programistom narzędzia do efektywnego radzenia sobie z wyzwaniami programowania. Pozwalaja na dynamiczne przydzialy pamięci i łatwa manipulacje zestawami danych.

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

Nieogólne kolekcje, takie jak ArrayList i Hashtable, są mniej bezpieczne typowo i mogą przechowywać dowolny typ obiektu. Kolekcje ogólne, takie jak List i Dictionary, zapewniają bezpieczeństwo typu i lepszą wydajność poprzez egzekwowanie spójności typu danych.

Jak stworzyć liste generyczna w C#?

Ogólną listę w C# można utworzyć za pomocą klasy List. Na przykład, lista liczb całkowitych może być utworzona za pomocą List numbers = new List { 1, 2, 3 };.

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

Możesz uzyc metody RenderHtmlAsPdf z IronPDF, aby konwertować ciagi HTML na PDF. Wspiera również konwertowanie plików HTML i URL na dokumenty PDF, zachowujac integralnosc ukladki i stylu.

Jakie sa najlepsze praktyki używania kolekcji w C#?

Najlepszymi praktykami podczas używania kolekcji w C# jest wybór odpowiedniego rodzaju kolekcji do swoich potrzeb, na przykład używanie Dictionary dla par klucz-wartość oraz List dla uporządkowanych list, a także zapewnienie prawidłowego zarządzania pamięcią poprzez usuwanie kolekcji, gdy nie są już potrzebne.

Jak kolekcje mogą wzbogacić tworzenie PDF w aplikacjach C#?

Kolekcje mogą efektywnie organizowac dane do tworzenia dokumentów. Na przykład, użycie List do kompilacji danych sprzedaży może ulatwic tworzenie kompleksowych raportow PDF przy użyciu IronPDF, usprawniajac zarządzanie danymi i prezentacje.

Jakie opcje licencyjne są dostępne dla IronPDF?

IronPDF oferuje licencje Lite z rokiem wsparcia i aktualizacjami oraz wersje próbna z watermarkiem do oceny. Te opcje pozwalają programistom testowac i implementowac możliwości IronPDF w ich projektach.

Jak zainstalować IronPDF w projekcie .NET?

Możesz zainstalować IronPDF w projekcie .NET używając Menedzera Pakietow NuGet za pomoca polecenia Install-Package IronPdf. Alternatywnie, możesz 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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie