AYUDA .NET

Acción C# (Cómo funciona para desarrolladores)

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.

Comprensión de los delegados en C#

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.

¿Qué es un delegado Func?

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.

Delegados en la práctica: Ejemplos

Echemos un vistazo a algunos ejemplos para entender cómo funcionan los delegados Func y Action en C#.

Ejemplo de delegado de acción

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!")
$vbLabelText   $csharpLabel

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.

Ejemplo de delegado Func

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)
$vbLabelText   $csharpLabel

Este ejemplo crea un delegado Func que toma dos parámetros enteros y devuelve su suma. La suma se mostrará así en la consola:

Acción C# (Cómo Funciona Para Desarrolladores): Figura 1

Conceptos clave

Métodos anónimos

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.

Expresiones lambda

Las expresiones lambda son una forma abreviada de escribir métodos anónimos. Permiten escribir menos código logrando el mismo resultado.

Delegado genérico

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.

Instancia delegada

Una instancia de delegado se crea con la palabra clave new o simplemente asignando un método que coincida con la firma del delegado.

Espacio de nombres del sistema

El espacio de nombres System en .NET contiene tipos integrados como Func y Action, que son parte de la biblioteca de clases base.

Programación asíncrona con delegados

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.

Ejemplo: Procesamiento asíncrono de archivos

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
$vbLabelText   $csharpLabel

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.

Introducción de IronPDF: Una biblioteca C# PDF

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.

Instalación de IronPDF

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.

Ejemplo de código con Action Delegate

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
$vbLabelText   $csharpLabel

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.

Acción de C# (Cómo Funciona para Desarrolladores): Figura 2

Licencias

Acción C# (Cómo Funciona para Desarrolladores): Figura 3

IronPDF ofrece varias opciones de licencia para desarrolladores, desde licencias para desarrolladores individuales hasta acuerdos empresariales. Los precios de estas licencias comienzan desde $749.

Conclusión

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.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
C# Record (Cómo funciona para los desarrolladores)
SIGUIENTE >
C# Orientado a Objetos (Cómo funciona para desarrolladores)