Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
En este tutorial, enseñaremos los conceptos de acción de C#, delegado Func y temas relacionados. Esta guía está diseñada para principiantes y te guiará a través de los conceptos básicos, proporcionará ejemplos y explicará términos clave del delegado de acción.
Empecemos por entender qué son los delegados en C#. Exploraremos la biblioteca de 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 se usan ampliamente: 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 texto.
Echemos un vistazo a 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, se puede utilizar 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, proporcionando más flexibilidad al permitir especificar 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 integrados como Func y Action, que son parte de la biblioteca de clases base.
Los delegados, incluidos Action y Func, son esenciales para gestionar 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. Usar un delegado Action junto con patrones de programación asincrónica 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 que el archivo se procesa, se invoca un delegado Action llamado onComplete para notificar al llamador que la operación está completa, permitiendo realizar acciones adicionales como actualizar la interfaz de usuario o registrar resultados.
IronPDF es una completa biblioteca PDF de C# diseñada para que los desarrolladores de .NET creen, editen y manipulen archivos PDF con facilidad. Se distingue por un motor de renderizado basado en Chrome, asegurando PDFs con precisión de píxeles a partir de contenido HTML, CSS, 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 varias opciones de licencia para desarrolladores, desde licencias para desarrolladores individuales hasta acuerdos empresariales. Los precios de estas licencias comienzan desde $749.
Para ahora, deberías tener una comprensión básica de los delegados Action y Func en C#, junto con cómo usar 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 las capacidades de IronPDF libremente con su versión de prueba gratuita. Si se adapta a los requisitos de su proyecto, puede obtener una licencia con precios a partir de $749.