AYUDA .NET

C# Pass by Reference (Cómo funciona para desarrolladores)

Actualizado agosto 13, a. m.
Compartir:

Introducción

La gestión eficaz de la memoria y la manipulación de datos son componentes esenciales para construir código de alto rendimiento en el mundo de la programación. Para escribir código eficaz y sin errores es necesario comprender cómo se procesan los datos transmitido entre métodos y funciones en lenguajes como C#. Una idea que es crucial para este procedimiento es "pasar por referencia" Exploraremos el significado de "pass-by-reference" en C# y los escenarios de uso apropiados en este post.

Cómo utilizar C# Pasar por referencia

  1. Definir un método con parámetros de referencia.
  2. Inicializar una variable.
  3. Llame al método con la palabra clave Ref.
  4. Modificar la variable dentro del método.
  5. Observar los cambios en el método principal.
  6. Definir Otro Método con Parámetro Out para generar PDF.
  7. Inicializar y llamar al método Out.

¿Qué es un Pass by Reference C#?

Utilizar una referencia para pasar se refiere a la forma en C# de enviar argumentos a funciones o métodos dando una referencia a la variable inicial del método llamado en lugar de una copia de su valor. Esto implica que cualquier cambio realizado en el parámetro dentro del método también tendrá un impacto en la variable inicial fuera del método.

Variables de tipo valor en C# (como int, float, bool, etc.) suelen suministrarse mediante value, un parámetro de referencia que significa que el método recibe una copia del valor de la variable. No obstante, puede indicar al compilador que pase los argumentos por referencia utilizando la palabra clave ref.

Utilizar la palabra clave ref

En C#, se pueden hacer argumentos para parámetros de referencia pasados por referencia utilizando la palabra clave ref. Cualquier modificación realizada en un parámetro suministrado por referencia mediante la palabra clave ref repercutirá en la variable original.

class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }
    static void ModifyByRef(ref int x)
    {
        x = x * 2;
    }
}
class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }
    static void ModifyByRef(ref int x)
    {
        x = x * 2;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

El método ModifyByRef del ejemplo anterior utiliza la palabra clave ref para tomar un parámetro entero, x, por referencia. Cualquier modificación hecha al parámetro ref x dentro del método tiene un impacto inmediato en la variable num fuera del método cuando el método es invocado con ref num.

La palabra clave out

La palabra clave out se utiliza para pasar parámetros por referencia al método invocador, igual que ref. Como resultado, los métodos pueden devolver numerosos valores.

class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }
    static void Calculate(int x, int y, out int result)
    {
        result = x + y;
    }
}
class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }
    static void Calculate(int x, int y, out int result)
    {
        result = x + y;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Dos parámetros enteros, x, e y, así como un parámetro extra resultado denotado por la palabra clave out, son pasados al método Calcular en este ejemplo. El resultado se asigna al parámetro resultado después de que el procedimiento calcule la suma de x e y. El resultado no necesita ser inicializado antes de ser enviado al método porque está etiquetado como out.

Cuándo utilizar el paso por referencia

Para escribir código eficiente y fácil de mantener es necesario saber cuándo utilizar la referencia pass-by. Las siguientes situaciones requieren el uso de múltiples valores de pass-by-reference:

Modificación de múltiples variables

Pasar los parámetros por referencia puede ser útil cuando un método necesita cambiar varias variables y esos cambios deben reflejarse fuera del método. En lugar de que el procedimiento devuelva varios valores, las variables pueden enviarse por referencia y modificarse directamente dentro del método.

static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2;
    b *= 3;
}
static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2;
    b *= 3;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Grandes estructuras de datos

Al evitar la duplicación innecesaria de datos, el paso de grandes estructuras de datos -como matrices u objetos complicados- mediante el paso de parámetros por referencia puede mejorar la eficiencia. Sin embargo, el paso por referencia debe utilizarse con precaución cuando se trabaja con estructuras de datos enormes, ya que puede tener consecuencias inesperadas si no se maneja correctamente.

Interoperabilidad con código externo

Podría ser necesario enviar argumentos por referencia para respetar tanto la definición del método como los requisitos del código externo al interactuar con bibliotecas externas o integrar código nativo.

¿Qué es IronPDF?

La biblioteca de C# IronPDF permite a los programadores crear, modificar y representar documentos PDF dentro de aplicaciones .NET. Su amplio conjunto de funciones simplifica el trabajo con archivos PDF. Puede crear documentos PDF a partir de HTML, fotos y otros formatos; anotar PDF con texto, imágenes y otros datos; y dividir, fusionar y editar documentos PDF preexistentes.

Características de IronPDF

Anotación de texto e imágenes

IronPDF le permite añadir mediante programación texto, imágenes y anotaciones a documentos PDF. Puede anotar archivos PDF con firmas, sellos y observaciones gracias a esta funcionalidad.

Seguridad PDF

IronPDF permite especificar distintos permisos, como imprimir, copiar contenido y editar el documento, y puede cifrar documentos PDF con contraseñas. Esto le ayuda a controlar el acceso a los archivos PDF y a salvaguardar los datos confidenciales.

Rellenar formularios PDF interactivos

IronPDF le permite rellenar formularios PDF interactivos mediante programación. Esta función resulta útil para crear documentos personalizados a partir de las entradas de los usuarios o para automatizar el envío de formularios.

Compresión y optimización de PDF

Para minimizar el tamaño del archivo sin sacrificar la calidad, IronPDF ofrece soluciones tanto para la compresión como para la optimización de archivos PDF. Esto reduce la cantidad de almacenamiento necesaria para los documentos PDF, al tiempo que mejora el rendimiento.

Compatibilidad multiplataforma

IronPDF está hecho para funcionar a la perfección con aplicaciones .NET destinadas a Windows, Linux y macOS, entre otras plataformas. Los marcos .NET más populares, como ASP.NET, .NET Core y Xamarin, están integrados con él.

Crear un nuevo proyecto de Visual Studio

Es fácil crear un proyecto de consola con Visual Studio. Para crear una aplicación de consola, haga lo siguiente en Visual Studio:

Antes de empezar Visual Studioasegúrese de que lo ha instalado en su ordenador.

Iniciar un nuevo proyecto

Seleccione Archivo, luego Nuevo y, por último, Proyecto.

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 1

En la parte izquierda del cuadro "Crear un nuevo proyecto", seleccione su lenguaje de programación preferido (C#, por ejemplo).

La "Consola App" o "Consola App (.NET Core)" puede elegirse de la siguiente lista de tipos de referencia de plantillas de proyectos.

Introduzca un nombre para su proyecto en el campo "Nombre".

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 2

Seleccione la ubicación en la que desea guardar el proyecto.

Pulse "Crear" para iniciar el proyecto de la aplicación Consola.

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 3

Instalación de IronPDF

En Herramientas de Visual Studio encontrará la interfaz Visual Command-Line. Seleccione el Gestor de paquetes para NuGet. En la pestaña del terminal de gestión de paquetes, debe escribir el siguiente comando.

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

Otra alternativa es utilizar el gestor de paquetes. La instalación del paquete directamente en la solución es posible con la opción NuGet Package Manager. Utilice el cuadro de búsqueda del sitio web de NuGet para localizar paquetes. La siguiente captura de pantalla de ejemplo ilustra lo fácil que es buscar "IronPDF" en el gestor de paquetes:

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 4 - Instalación de IronPDF desde el gestor de paquetes NuGet

La lista de resultados de búsqueda relevantes puede verse en la imagen superior. Para permitir la instalación del software en su máquina, por favor, ajuste estos parámetros.

Una vez descargado e instalado el paquete, puede utilizarse en el proyecto actual.

Pasar por referencia con IronPDF

Esta es una ilustración de cómo utilizar la función de paso por referencia de IronPDF.

using IronPdf;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
using IronPdf;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

La función ConvertHtmlToPdf de este ejemplo toma tres parámetros: Contenido HTML, una matriz de bytes llamada pdfBytes y un objeto IronPDF HtmlToPdf. La palabra clave out indica que el parámetro pdfBytes se suministra por referencia y se modificará dentro del método.

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 5

El contenido HTML se convierte en un documento PDF utilizando IronPDF dentro de la función ConvertHtmlToPdf, y los datos binarios resultantes se almacenan en la matriz pdfBytes.

Utilizamos ConvertHtmlToPdf de nuevo en la función Main, pasando el array pdfBytes por referencia. Tras la llamada al método, el contenido PDF de IronPDF se almacena en la ubicación de memoria de la matriz pdfBytes.

C# Pasar por referencia (Cómo funciona para los desarrolladores): Figura 6

Esto le muestra cómo crear y trabajar con documentos PDF de una manera eficiente utilizando IronPDF y pass-by-reference en C#.

Conclusión

En resumen, el uso de IronPDF con pass-by-reference en C# mejora enormemente las capacidades de creación y modificación de documentos PDF en programas .NET. El uso eficaz de las palabras clave ref y out permite a los desarrolladores transmitir argumentos por referencia con facilidad, lo que hace posible modificar variables y contenido dentro de los métodos de forma rápida y eficaz. La amplia gama de funciones de IronPDF, que incluye la capacidad de convertir HTML a PDF, generar PDF basados en imágenes y realizar extensas tareas de modificación de PDF, permite a los desarrolladores construir fácilmente documentos PDF dinámicos e interactivos.

IronPDF ofrece las herramientas y API necesarias para agilizar los procesos de procesamiento de documentos, incluida la división, fusión, anotación y optimización de archivos PDF. Además, la interoperabilidad multiplataforma de PDF garantiza que las aplicaciones C# puedan incorporar funciones PDF con facilidad en una gran variedad de entornos. Esencialmente, los desarrolladores pueden crear nuevas vías para crear, modificar y mostrar documentos PDF en sus aplicaciones fusionando la fuerza del paso por referencia de C# con el abundante conjunto de funciones de IronPDF.

Por último, puede trabajar eficazmente con Excel, hacer PDF, realizar OCR y utilizar códigos de barras incluyendo IronPDF y IronSoftware a partir de 749 dólares. Los desarrolladores pueden elegir el mejor modelo con confianza si existen opciones de licencia claras y adaptadas a las necesidades del proyecto. Con estas ventajas, los promotores pueden resolver diversos retos con eficacia y transparencia.

< ANTERIOR
NServiceBus C# (Cómo funciona para desarrolladores)
SIGUIENTE >
EasyNetQ .NET (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.8 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,439,034 Ver licencias >