Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En este tutorial, enseñaremos los conceptos de C# Action, Func delegate y temas relacionados. Esta guía está diseñada para principiantes y le guiará a través de los conceptos básicos, proporcionará ejemplos y explicará los términos clave dedelegado de acción.
Empecemos por entender qué son los delegados en C#. Exploraremosla biblioteca IronPDF más adelante en el artículo.
Los delegados son una construcción de programación que actúa como referencias a métodos, definidos por un conjunto particular de parámetros y un tipo de retorno, encapsulando funcionalidades como el tipo de delegado predefinido y permitiendo que los métodos devuelvan valores.
Permite pasar métodos como argumentos. Esencialmente, un delegado sirve como puntero a una función, apuntando al método que representa. En C#, hay dos tipos de delegados predefinidos que son ampliamente utilizados: Func y Action.
El delegado Func representa un método que puede tener un valor de retorno. El último parámetro de tipo especifica el tipo de retorno, y los tipos anteriores especifican los parámetros de entrada.
Por ejemplo, un Func<int, int, string> toma dos parámetros enteros y devuelve un mensaje de cadena.
Veamos algunos ejemplos para entender cómo funcionan los delegados Func y Action en C#.
Un delegado de acción, un tipo de delegado predefinido, se utiliza cuando se desea ejecutar un método que no devuelve específicamente un valor, centrándose en cambio en las operaciones. He aquí un ejemplo básico:
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");
Dim display As Action(Of String) = Sub(message) Console.WriteLine(message)
display("Hello, World!")
Este código define un delegado de Acción, ilustrando el uso de un método anónimo, que toma un único parámetro de cadena y lo imprime en la consola. El símbolo => se utiliza para definir una expresión lambda, que es una forma concisa de escribir métodos anónimos.
Un delegado Func, que devuelve un valor, puede utilizarse de la siguiente manera:
Func<int, int, int> add = (x, y) => x + y;
int result = add(5, 3);
Console.WriteLine(result);
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)
Este ejemplo crea un delegado Func que toma dos parámetros enteros y devuelve su suma. La suma se mostrará así en la consola:
Los métodos anónimos de C# permiten definir métodos en línea sin nombre. A menudo se utilizan con delegados para crear instancias de delegado directamente.
Las expresiones lambda son una forma abreviada de escribir métodos anónimos. Permiten escribir menos código logrando el mismo resultado.
Un delegado genérico puede trabajar con cualquier tipo de datos. Func y Action son ejemplos de delegados genéricos, que proporcionan más flexibilidad al permitir especificar los tipos de entrada y salida en tiempo de ejecución.
Una instancia de delegado se crea con la palabra clave new o simplemente asignando un método que coincida con la firma del delegado.
El espacio de nombres System en .NET contiene tipos incorporados como Func y Action, que forman parte de la biblioteca de clases base.
Los delegados, incluyendo Action y Func, son parte integral de la gestión de tareas asíncronas en C#. Permiten a los desarrolladores encapsular una referencia a un método que puede ejecutarse de forma asíncrona. Esto significa que el hilo principal de la aplicación puede iniciar una tarea y luego continuar con otro trabajo hasta que la tarea se haya completado.
En ese momento, se llama a un método de devolución de llamada, referenciado por un delegado, para gestionar el resultado. Este patrón es vital para crear interfaces de usuario con capacidad de respuesta que sigan siendo interactivas incluso cuando se realizan operaciones de larga duración.
Considere una aplicación que necesita procesar un archivo grande. El uso de un delegado Action junto con patrones de programación asíncronos como Task puede mejorar significativamente el rendimiento de la aplicación:
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 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(ByVal filePath As String, ByVal 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
If onComplete IsNot Nothing Then
onComplete.Invoke("File processing completed successfully.")
End If
End Function
En este ejemplo, File.ReadAllTextAsync se utiliza para leer el contenido del archivo sin bloquear el hilo principal. Una vez procesado el archivo, se invoca a un delegado Action llamado onComplete para notificar a la persona que llama que la operación se ha completado, permitiendo acciones posteriores como la actualización de la interfaz de usuario o el registro de resultados.
IronPDF es una completa biblioteca PDF en C# diseñada para que los desarrolladores .NET puedan crear, editar y manipular archivos PDF con facilidad. Se distingue por un motor de renderizado basado en Chrome, que garantizapDF perfectos a partir de contenido HTMLCSS, JavaScript e imágenes.
IronPDF es compatible con una amplia gama de marcos y entornos .NET, incluidos .NET Standard, .NET Framework y .NET Core, en las plataformas Windows, Linux y macOS.
Para incorporar IronPDF a sus proyectos .NET, puede utilizar NuGet, que es el método más sencillo. Basta con abrir la consola del gestor de paquetes en Visual Studio y ejecutar el siguiente comando:
Install-Package IronPdf
Este comando obtiene e instala el paquete IronPDF, configurando su proyecto para comenzar a utilizar IronPDF para la generación y manipulación de PDF.
A continuación se muestra un ejemplo sencillo que demuestra cómo utilizar IronPDF junto con un delegado de acción para realizar una tarea de generación de PDF:
using IronPdf;
using System;
class Program
{
static void Main(string [] args)
{
var renderer = new ChromePdfRenderer();
Action<string> generatePdf = html =>
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("example.pdf");
};
generatePdf("<p>Hello, world!</p>");
Console.WriteLine("PDF generated successfully.");
}
}
using IronPdf;
using System;
class Program
{
static void Main(string [] args)
{
var renderer = new ChromePdfRenderer();
Action<string> generatePdf = html =>
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("example.pdf");
};
generatePdf("<p>Hello, world!</p>");
Console.WriteLine("PDF generated successfully.");
}
}
Imports IronPdf
Imports System
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim generatePdf As Action(Of String) = Sub(html)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("example.pdf")
End Sub
generatePdf("<p>Hello, world!</p>")
Console.WriteLine("PDF generated successfully.")
End Sub
End Class
Este ejemplo define un delegado de acción que toma una cadena de HTML y utiliza IronPDF para convertirla en un documento PDF.
A continuación, el PDF generado se guarda en el sistema de archivos. Este enfoque demuestra cómo pueden utilizarse los delegados para encapsular la lógica de generación de PDF, haciendo que el código sea más modular y flexible.
IronPDF ofrece variosopciones de licencia para desarrolladoresdesde licencias individuales para desarrolladores hasta acuerdos para empresas. El precio de estas licencias comienza a partir de $749.
Por ahora, usted debe tener una comprensión básica de Action y Func delegados en C #, junto con la forma de utilizar métodos anónimos y expresiones lambda. Recuerda, la práctica es clave para dominar los conceptos de delegado. Intenta crear tus propios ejemplos para definir, asignar e invocar delegados.
Puede explorar libremente las capacidades de IronPDF con suversión de prueba gratuita. Si se adapta a los requisitos de su proyecto, puede obtener una licencia a partir de $749.
9 productos API .NET para sus documentos de oficina