IRONSOFTWAREHOME
开发者更新

C# Params(开发人员如何使用)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月21日

C#中的params关键字是.NET中的一个强大功能,允许方法接受可变数量的参数。 这可以显著简化调用需要不同数量参数的方法时的语法。 在本综合指南中,我们将探索C#中的params关键字,其语法、使用案例和最佳实践。 在本文稍后,我们将介绍来自Iron Software的IronPDF库,并解释如何使用params关键字和IronPDF生成PDF。

什么是C#参数类型?

在C#的范围内,方法通常遵循一套预定的参数。 尽管如此,仍然存在一些情况,您可能会不确定特定方法所需的参数数量。 由此引入"params"关键字,其解决方案允许指定可以容纳一系列参数的方法参数。 在开发者不确定确切参数数量的情况下,这一功能证明是无价的,它有助于在方法声明中传递不确定或可选数量的同类型参数。

public class ParamsExample
{
    // Method accepting a variable number of string arguments using the params keyword
    public void PrintMessages(params string[] messages)
    {
        foreach (var message in messages)
        {
            Console.WriteLine(message);
        }
    }
}

// Usage
class Program
{
    public static void Main()
    {
        var example = new ParamsExample();
        example.PrintMessages("Hello", "World", "!");
    }

    // More examples
    public static void AddItemsToShoppingBasket(params string[] items)
    {
        // Implementation to add items to a shopping basket
    }

    public static void AddItemsSumToShoppingBasket(params int[] sum) // Using params with int
    {
        // Implementation to add sum of items to the shopping basket
    }
}

AddItemsToShoppingBasket方法可以用可变数量的字符串参数来调用。 params关键字简化了方法调用的语法,使开发者可以直接传递可选参数,而无需显式创建数组输入。

class Program
{
    public static void Main()
    {
        AddItemsToShoppingBasket("cake", "pizza", "cold drink");
        AddItemsToShoppingBasket("snacks", "burger");
        AddItemsToShoppingBasket(); // Valid even with zero parameters, using default value
    }
}

考虑事项和最佳实践

-**将参数放在参数列表末尾:**建议将 params 参数放在方法参数列表的末尾。这种做法有助于提高代码清晰度,减少方法调用过程中的混淆。 需要明确值的参数应在params前面以便有效组织。

  • **明确指定非params参数:**使用params参数明确提供值。 这种做法防止了模棱两可,并确保方法被准确调用所需的参数数量。

  • **注意以防止歧义:**在方法中使用多个重载或相同类型的参数时,谨防使用params。 编译器可能会难以确定调用哪种方法,可能导致歧义错误。

  • **探索替代方法:**虽然params提供便利,在某些情况下考虑替代方法。 使用诸如List<t>之类的集合可能更可取,以增强功能或在传递命名参数符合目标时。

  • **在相关场景中慎用:**在参数数量可变且在不同方法调用中波动的场景中,酌情使用params。 当参数数量是固定且已知时,避免使用它。

参数类型的一维数组

AddItemsToShoppingBasket还可以通过用一维数组调用来使用。

class Program
{
    public static void Main()
    {
        var items = new string[] { "cold drink", "snack", "roll" }; // 1D string array
        AddItemsToShoppingBasket(items); // Works as expected
        AddItemsToShoppingBasket("cold drink", "coke", "roll"); // Similar result to the above line
    }
}

传递同一类型的逗号分隔数组

可以通过在方法调用中传递变量的列表/数组来调用AddItemsToShoppingBasket,如下面所示。

class Program
{
    public static void Main()
    {
        // Example method signature
        AddItemsToShoppingBasket("snacks", "burger", "snacks", "burger", "cold drink"); // Comma separated values
        AddItemsToShoppingBasket("snacks");
    }
}

传递定义类型的数组

数组应包含在params方法中定义的相同类型; 否则会发生错误。

// Example that results in an error
AddItemsToShoppingBasket("snacks", 2, "burger"); // Error due to type mismatch
AddItemsToShoppingBasket(2, 3, 4); // Error since params type is string

如果方法中定义的params存在类型不匹配,则会发生语法错误。

始终是方法中的最后一个参数

在方法签名中的params参数后不允许有额外参数。 在方法参数声明中,仅允许一个params参数。 错误地定义它会导致编译错误。

class Program
{
    static void Main(string[] args)
    {
        // Example 1
        public static void AddItemsToShoppingBasket(double total, params string[] items)
        {
            // Works fine as `params` is the last parameter
        }
        
        // Example 2, error scenario
        public static void AddItemsToShoppingBasket(params string[] items, decimal total, int total)
        {
            // Error: `params` keyword must be the last parameter 
        }
    }
}

仅一个params关键字

在方法签名中,仅允许一个params参数。 如果在方法签名中发现多于一个params关键字,编译器会抛出错误。

class Program
{
    static void Main(string[] args)
    {
        public static void AddItemsToShoppingBasket(params string[] items, params string[] quantity)
        {
            // Compiler Error: Only one params keyword is allowed in the method signature
        }
    }
}

您可以不传递参数

如果方法中有一个使用params关键字的参数,则可以不带任何参数调用,编译器不会抛出错误。

AddItemsToShoppingBasket(); // Works as expected

对于带有params参数的任何参数,它被认为是可选参数,可以在不传递参数的情况下调用。

代码示例

创建一个新的控制台应用程序。 打开Visual Studio,创建一个新项目,并选择控制台应用程序类型。

C#参数(开发者如何使用):图1 - 创建一个新的控制台应用程序

现在添加以下代码。

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<string> cart = new List<string>();

        void AddItemsToShoppingBasket(params string[] samples)
        {
            for (int i = 0; i < samples.Length; i++)
            {
                cart.Add(samples[i]);
            }
        }

        // Caller code
        Console.WriteLine("Enter the cart items as comma separated values");
        var itemsString = Console.ReadLine();
        if (itemsString != null)
        {
            var items = itemsString.Split(",").ToArray();
            AddItemsToShoppingBasket(items);
        }
        AddItemsToShoppingBasket("Sample1", "Sample2");
        
        Console.WriteLine("-------------------------------------------------------");
        Console.WriteLine("Display Cart");
        
        foreach (var item in cart)
        {
            Console.WriteLine(item);
        }
    }
}

输出

C#参数(开发者如何使用):图2 - 上面代码的输出

介绍IronPDF

Iron Software的IronPDF C# PDF库是一款多功能库,可以在C#中读取、写入和管理PDF文档。 它支持所有类型的现代应用程序开发,如移动端、网站、桌面端、Docker等。且支持不同操作系统如Windows、Linux、Unix等。它不依赖于本机操作系统方法。

IronPDF在HTML到PDF转换方面表现出色,确保精确保留原始布局和样式。 它非常适合从基于Web的内容中创建PDF,如报告、发票和文档。 利用对HTML文件、URL和原始HTML字符串的支持,IronPDF轻松生成高质量的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");
    }
}

安装

IronPDF库可以使用NuGet包管理器控制台通过以下命令或使用Visual Studio包管理器进行安装。

PM > Install-Package IronPdf

使用IronPDF生成PDF

现在我们将使用IronPDF从上述示例中生成PDF文档。

using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;

class Program
{
    public static void Main()
    {
        List<string> cart = new List<string>();

        void AddItemsToShoppingBasket(params string[] items)
        {
            for (int i = 0; i < items.Length; i++)
            {
                cart.Add(items[i]);
            }
        }

        // Take input from console
        Console.WriteLine("Enter the cart items as comma separated values");
        var itemsString = Console.ReadLine();

        // Read the items
        if (itemsString != null)
        {
            var items = itemsString.Split(",").ToArray();
            AddItemsToShoppingBasket(items);
        }

        // Add to cart
        AddItemsToShoppingBasket("Sample1", "Sample2");

        Console.WriteLine("------------------------------------------------");
        Console.WriteLine("Display Cart");
        Console.WriteLine("------------------------------------------------");

        string name = "Sam";
        var count = cart.Count;
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} items in the cart.</p>
" +
        string.Join("\n", cart.Select(x => $"<p>{x}</p>"))
        + @"
</body>
</html>";

        // Create a new PDF document
        var pdfDoc = new ChromePdfRenderer();
        pdfDoc.RenderHtmlAsPdf(content).SaveAs("cart.pdf");
    }
}

在上面的代码中,我们正在生成购物车项目的HTML文档,然后使用IronPDF将其保存为PDF文档。

输出

C#参数(开发者如何使用):图3 - 从上面的代码生成的PDF输出

许可(提供免费试用)

IronPDF在生产环境中需要许可证密钥。 可以从许可证页面这里获得试用密钥。 将密钥放置在appsettings.json中。

"IronPdf.LicenseKey": "your license key"
JSON

提供您的电子邮件ID以获取试用许可证,将其发送到您的电子邮件ID。

结论

C#中的params关键字提供了一种处理需要可变数量参数的方法的灵活方式。 它简化了方法调用,使代码更具可读性和可维护性。 与IronPDF一起,它是任何程序员编写干净代码的绝佳技能组合。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起