
C# Action (jak to działa dla programistów)
W tym samouczku nauczymy Cie pojec C# Action, delegat Func i powiazanych tematow. Przewodnik ten jest przeznaczony dla początkujacych i poprowadzi Cie przez podstawy, zapewni przykłady i wyjasni kluczowe pojecia delegatu action.
Zacznijmy od zrozumienia, czym sa delegaty w C#. Przeglądamy biblioteke IronPDF pozniej w artykułe.
Zrozumienie delegatow w C#
Delegaty sa konstrukcją programistyczną, która działa jako odniesienia do metod, zdefiniowane przez określony zestaw parametrów i typ zwrotny, enkapsulując funkcjonalności, takie jak predefiniowany typ delegatu i pozwalając metodom na zwracanie wartości.
Pozwala na przekazywanie metod jako argumentów. W zasadzie delegat służy jako wskaźnik funkcji, wskazując na metodę, którą reprezentuje. W C# istnieją dwa predefiniowane typy delegatów, które są szeroko stosowane: Func i Action.
Co to jest delegat Func?
Delegat Func reprezentuje metodę, która może mieć wartość zwrotną. Ostatni parametr typu określa typ zwrotny, a wcześniejsze typy określają parametry wejściowe.
Na przykład Func<int, int, string> przyjmuje dwa parametry całkowitoliczbowe i zwraca komunikat w postaci łańcucha.
Delegaty w praktyce: Przykłady
Przyjrzyjmy się kilku przykładowym zastosowaniom, aby zrozumieć, jak działają delegaty Func i Action w C#.
Przykład użycia delegatu Action
Delegat Action, predefiniowany typ delegatu, jest używany, gdy chcemy uruchomić metodę, która nie zwraca specyficznej wartości, skupiając się bardziej na operacjach. Oto podstawowy przykład:
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");Dim display As Action(Of String) = Sub(message) Console.WriteLine(message)
display("Hello, World!")Ten kod definiuje delegata Action, ilustrując użycie metody anonimowej, która przyjmuje pojedynczy parametr typu string i wyświetla go w konsoli. Symbol => jest używany do definiowania wyrażenia lambda, które jest zwięzłym sposobem pisania metod anonimowych.
Przykład użycia delegatu Func
Delegat Func, który zwraca wartość, może być użyty w następujący sposób:
Func<int, int, int> add = (x, y) => x + y;
int result = add(5, 3);
Console.WriteLine(result);Dim add As Func(Of Integer, Integer, Integer) = Function(x, y) x + y
Dim result As Integer = add(5, 3)
Console.WriteLine(result)Przykład ten tworzy delegata Func, który przyjmuje dwa parametry całkowitoliczbowe i zwraca ich sumę. Suma zostanie wyświetlona na konsoli w następujący sposób:

Kluczowe pojęcia
Metody anonimowe
Metody anonimowe w C# zapewniają sposób definiowania metod w linii bez nazwy. Często są używane z delegatami do tworzenia instancji delegatów bezpośrednio.
Wyrażenia lambda
Wyrażenia lambda to skrótowy sposób pisania metod anonimowych. Pozwalają na pisanie mniejszej ilości kodu przy osiąganiu tego samego rezultatu.
Delegaty generyczne
Delegat generyczny może pracować z dowolnym typem danych. Func i Action są przykładami delegatów generycznych, zapewniając większą elastyczność, poprzez umożliwienie określenia typów wejściowych i wyjściowych w czasie wykonywania.
Instancja delegata
Instancja delegata jest tworzona za pomocą słowa kluczowego new lub po prostu przez przypisanie metody odpowiadającej sygnaturze delegata.
Przestrzeń nazw System
Przestrzeń nazw System w .NET zawiera wbudowane typy, takie jak Func i Action, które są częścią biblioteki klas podstawowych.
Programowanie asynchroniczne z delegatami
Delegaty, w tym Action i Func, są integralną częścią zarządzania zadaniami asynchronicznymi w C#. Pozwalają programistom enkapsulować odniesienie do metody, która następnie może być wykonywana asynchronicznie. Oznacza to, że główny wątek aplikacji może zainicjować zadanie, a następnie kontynuować innymi działaniami, aż zadanie zostanie ukończone.
W tym momencie wywoływana jest metoda zwrotna, na którą wskazuje delegat, aby obsłużyć wynik. Ten wzorzec jest istotny dla tworzenia responsywnych interfejsów użytkownika, które pozostają interaktywne nawet przy wykonywaniu długotrwałych operacji.
Przykład: Asynchroniczne przetwarzanie plików
Weźmy pod uwagę aplikację, która musi przetworzyć duży plik. Użycie delegatu Action w połączeniu z asynchronicznymi wzorcami programowania, takimi jak Task, może znacznie poprawić wydajność aplikacji:
public async Task ProcessFileAsync(string filePath, Action<string> onComplete)
{
// Asynchronously read file content
string fileContent = await File.ReadAllTextAsync(filePath);
// Process the file content here (omitted for brevity)
// Once processing is complete, invoke the onComplete callback
onComplete?.Invoke("File processing completed successfully.");
}Public Async Function ProcessFileAsync(filePath As String, onComplete As Action(Of String)) As Task
' Asynchronously read file content
Dim fileContent As String = Await File.ReadAllTextAsync(filePath)
' Process the file content here (omitted for brevity)
' Once processing is complete, invoke the onComplete callback
onComplete?.Invoke("File processing completed successfully.")
End FunctionW tym przykładzie użyto File.ReadAllTextAsync, aby odczytać zawartość pliku bez blokowania głównego wątku. Gdy plik zostanie przetworzony, wywoływany jest delegat onComplete, aby powiadomić odbiorcę, że operacja została zakończona, co pozwala na przeprowadzenie dalszych działań, takich jak aktualizacja interfejsu użytkownika czy rejestrowanie wyników.
Wprowadzenie do IronPDF: C# Biblioteka PDF
IronPDF to wszechstronna biblioteka PDF dla C# przeznaczona dla programistów .NET, umożliwiająca tworzenie, edytowanie i manipulowanie plikami PDF w prosty sposób. Wyróżnia się silnikiem renderującym opartym na Chrome, zapewniającym projekcję perfekcyjnych pikseli PDF z treści HTML, CSS, JavaScript i obrazów.
IronPDF jest kompatybilny z szeroką gamą frameworków i środowisk .NET, w tym .NET Standard, .NET Framework i .NET Core, na platformach Windows, Linux i macOS.
Instalacja IronPDF
Aby wcielić IronPDF do swoich projektów .NET, możesz użyć NuGet, który jest najprostszą metodą. Otwórz konsolę Menedżera Pakietów w Visual Studio i uruchom następujące polecenie:
To polecenie pobiera i instaluje pakiet IronPDF, konfigurując Twój projekt do rozpoczęcia używania IronPDF do generowania i manipulowania PDF.
Przykład kodu z Delegatem Action
Oto prosty przykład pokazujący, jak używać IronPDF w połączeniu z delegatem Action do wykonania zadania generowania PDF:
using IronPdf;
using System;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Define an Action delegate that takes HTML content as a string
Action<string> generatePdf = html =>
{
// Render the HTML as a PDF
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF to a file
pdf.SaveAs("example.pdf");
};
// Generate the PDF with the provided HTML
generatePdf("<p>Hello, world!</p>");
Console.WriteLine("PDF generated successfully.");
}
}Imports IronPdf
Imports System
Module Program
Sub Main(args As String())
Dim renderer = New ChromePdfRenderer()
' Define an Action delegate that takes HTML content as a string
Dim generatePdf As Action(Of String) = Sub(html)
' Render the HTML as a PDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Save the PDF to a file
pdf.SaveAs("example.pdf")
End Sub
' Generate the PDF with the provided HTML
generatePdf("<p>Hello, world!</p>")
Console.WriteLine("PDF generated successfully.")
End Sub
End ModulePrzykład ten definiuje delegata Action, który przyjmuje łańcuch HTML i wykorzystuje IronPDF do renderowania go w dokument PDF. Wygenerowany PDF jest następnie zapisywany w systemie plików. Podejście to demonstruje, jak można używać delegatów do enkapsulowania logiki generowania PDF, czyniąc Twój kod bardziej modułowym i elastycznym.

Licencjonowanie

IronPDF oferuje różne opcje licencjonowania dla programistów, począwszy od licencji dla pojedynczych programistów po umowy typu enterprise. Ceny tych licencji zaczynają się od $999.
Wnioski
Do tej pory powinienes mieć podstawowe zrozumienie delegatow Action i Func w C#, wraz z tym jak używać metod anonimowych i wyrazen lambda. Pamietaj, ze praktyka jest kluczem do opanowania koncepcji delegatow. Sprobuj utworzyć własne przykłady definiowania, przypisywania i wywolywania delegatow.
Możesz dowolnie eksplorowac możliwości IronPDF z jego bezplatna wersja próbna. Jeżeli odpowiadają wymaganiom Twojego projektu, możesz zabezpieczyć licencję z cenami zaczynającymi się od $999.

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ącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.
Powiązane artykuły


