.NET 帮助

C# 引用传递(开发人员如何使用)

发布 2024年八月13日
分享:

介绍

在编程领域,有效的内存管理和数据操作是构建高性能代码的关键组成部分。 编写高效且无错误的代码需要了解数据是如何传输在像 C# 这样的语言中方法和函数之间。 在这个过程中至关重要的一个概念是“引用传递”。我们将在本文中探讨引用传递在C#中的含义以及适当的使用场景。

如何使用 C# 通过引用

  1. 定义一个包含 Ref 参数的方法。

  2. 初始化变量。

  3. 使用 Ref 关键字调用方法。

  4. 在方法内部修改变量。

  5. 观察主方法的变化。

  6. 定义另一种带有输出参数的方法以生成 PDF。

  7. 初始化并调用 Out 方法。

什么是引用传递 C#?

利用引用传递是指在C#中通过向函数或方法传递实参的引用,而不是其值的副本,从而传递调用方法的初始变量的方式。 这意味着在方法内部对参数进行的任何更改也会对方法外部的初始变量产生影响。

C# 中的值类型变量(例如 int、float、bool 等等。)通常由值提供,是一个引用参数,这意味着该方法接收变量值的副本。 尽管如此,你可以使用 ref 关键字告知编译器通过引用传递参数。

使用 ref 关键字

在C#中,可以使用ref关键字来传递引用参数。 对通过 ref 关键字引用提供的参数所做的任何修改都会影响原始变量。

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#

上例中的 ModifyByRef 方法使用 ref 关键字通过引用接收一个整数参数 x。 在使用 ref num 调用方法时,方法内部对 ref 参数 x 所做的任何修改都会立即影响到方法外的 num 变量。

out 关键字

out 关键字用于通过引用将参数传递给调用方法,就像 ref 一样。 因此,方法可以返回多个值。

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#

在这个示例中,有两个整数参数x和y,以及一个由out关键字表示的额外参数result传递给Calculate方法。 该结果在过程计算x和y的和之后被赋值给结果参数。 由于结果被标记为 out,因此不需要在发送到方法之前初始化。

何时使用引用传递

编写高效且可维护的代码需要知道何时使用引用传递。 以下情况需要使用多个传引用值:

修改多个变量

通过引用传递参数在当方法需要更改多个变量并且这些更改需要在方法外反映时可能会有所帮助。 与其让过程返回多个值,不如通过引用传递变量,并直接在方法中进行更改。

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#

大数据结构

通过防止不必要的数据重复,传递大型数据结构(如数组或复杂对象)可以通过引用传递参数来提高效率。 在处理巨大数据结构时,应谨慎使用引用传递,因为如果处理不当,可能会产生意想不到的后果。

与外部代码的互操作性

在与外部库交互或集成本地代码时,根据方法定义和外部代码的要求,可能需要通过引用传递参数。

什么是IronPDF?

C#库IronPDF for .NET 应用程序允许程序员在 .NET 应用程序中创建、修改和渲染 PDF 文档。 它的强大功能集使处理 PDF 文件变得简单。 您可以从HTML、照片和其他格式创建PDF文档; 使用文本、图像和其他数据标注 PDF; 拆分、合并和编辑已有的PDF文档。

IronPDF的主要功能是其转换能力HTML 转 PDF, 确保布局和样式得以保留。 此功能非常适合从基于网络的内容生成PDF,例如报告、发票和文档。 它将 HTML 文件、URLs 和 HTML 字符串转换为 PDF 文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

IronPDF 的功能

文本和图像注释

IronPDF允许您以编程方式向PDF文档添加文本、图像和注释。 通过此功能,您可以使用签名、印章和备注注释PDF文件。

PDF 安全

IronPDF允许您指定不同的权限,包括打印、复制内容和编辑文档,并且可以使用密码加密PDF文档。 这有助于您控制对PDF文件的访问并保护敏感数据。

填写交互式PDF表单

IronPDF 允许您以编程方式填写交互式 PDF 表单。 此功能有助于使用用户输入创建自定义文档或自动执行表单提交。

PDF 压缩和优化

为了在不牺牲质量的情况下最小化文件大小,IronPDF 提供了压缩和优化 PDF 文件的解决方案。 这减少了PDF文档所需的存储量,同时提升了性能。

跨平台兼容性

IronPDF 旨在与用于 Windows、Linux 和 macOS 等平台的 .NET 应用程序完美配合。 流行的 .NET 框架如 ASP.NET、.NET Core 和 Xamarin 都已与其集成。

创建一个新的Visual Studio项目

使用Visual Studio创建控制台项目非常简单。 要创建一个控制台应用程序,请在Visual Studio中执行以下操作:

开始之前Visual Studio 开发请确保您已在计算机上安装它。

开始一个新项目

选择文件,然后新建,最后选择项目。

C# 引用传递(它是如何为开发者工作的):图1

在“创建新项目”框的左侧,选择您喜欢的编程语言(例如 C#).

“控制台应用程序”或“控制台应用程序”(.NET Core)"模板可从以下项目模板参考类型列表中选择。"

在“名称”字段中为您的项目提供一个名称。

C# 引用传递(开发人员如何使用):图2

选择您想存储项目的存储位置。

按“创建”以启动控制台应用程序项目。

C# 引用传递(开发人员如何使用):图 3

安装 IronPDF

在 Visual Studio 工具中的工具下,您可以找到 Visual 命令行界面。 选择NuGet的包管理器。 在软件包管理终端选项卡上,你必须输入以下命令。

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

另一个选择是使用包管理器。 可以通过NuGet包管理器选项直接将包安装到解决方案中。 在NuGet网站上使用搜索框查找包。 以下示例截图说明了在包管理器中查找“IronPDF”是多么容易:

C# 按引用传递(它如何为开发人员工作):图4 - 从NuGet包管理器安装IronPDF

相关搜索结果列表可见于上图。 为了在您的机器上启用软件的安装,请调整这些设置。

一旦下载并安装了该软件包,它现在可以在当前项目中使用。

使用引用传递与IronPDF

这是一幅使用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#

在此示例中,ConvertHtmlToPdf函数接受三个参数:HTML内容,一个名为pdfBytes的字节数组,以及一个IronPDF HtmlToPdf对象。 out 关键字表示 pdfBytes 参数是通过引用提供的,并将在方法内部进行更改。

C# 引用传递(开发人员如何使用):图 5

HTML 内容通过 ConvertHtmlToPdf 函数使用 IronPDF 渲染成 PDF 文档,生成的二进制数据存储在 pdfBytes 数组中。

我们使用IronPDF HTML 至 PDF 转换在主函数中再次调用,通过引用传递 pdfBytes 数组。 方法调用后,IronPDF 的 PDF 内容存储在 pdfBytes 数组的内存位置。

C# 引用传递(对开发者的工作原理):图6

这将向您展示如何使用IronPDF和C#中的引用传递以高效的方式创建和处理PDF文档。

结论

总而言之,在C#中使用IronPDF的引用传递大大提升了在.NET程序中创建和修改PDF文档的能力。 有效使用 ref 和 out 关键字使开发人员能够轻松地通过引用传递参数,从而可以快速高效地在方法中修改变量和内容。 IronPDF 的广泛功能,包括将 HTML 转换为 PDF、基于图像生成 PDF 以及执行广泛的 PDF 修改任务,使开发人员能够轻松构建动态和交互式的 PDF 文档。

IronPDF 提供了加快文档处理过程所需的工具和 API,包括拆分、合并、注释和优化 PDF 文件。 此外,PDF 的跨平台互操作性保证了 C# 应用程序能够在各种环境中轻松集成 PDF 功能。 本质上,开发人员可以通过将C#的引用传递功能与IronPDF的丰富功能集相结合,在他们的应用程序中创建、修改和显示PDF文档的新途径。

最后,可以高效地使用 Excel、制作 PDF、执行 OCR 和使用 BarCode。 每个库的定价从 $749 开始. 如果有符合项目需求的明确许可选项,开发人员就可以放心地选择最佳模式。 凭借这些优势,开发人员可以高效透明地解决各种挑战。

< 前一页
NServiceBus C#(开发人员如何使用)
下一步 >
EasyNetQ .NET(开发人员的工作原理)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >