IRONSOFTWAREHOME
開発者向けアップデート

C# Params(開発者向けの動作方法)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

C# の params キーワードは、.NET における強力な機能で、メソッドに可変個の引数を受け取らせることができます。 これは、可変個数のパラメーターを必要とするメソッドを呼び出す際の構文を大幅に簡素化できます。 この包括的なガイドでは、C# の params キーワード、その構文、使用事例、ベストプラクティスを探ります。 この記事の後半では、IronPDF ライブラリを Iron Software から紹介し、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パラメータの値を明示的に提供することを確認してください。 この方法は曖昧さを防ぎ、必要な引数の数でメソッドが正確に呼び出されることを保証します。

  • 曖昧さを防ぐための注意を払う: 複数のオーバーロードや同じ型のパラメータを持つメソッドで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 引数を持つ任意のパラメータは、オプションパラメータと見なされ、パラメータを渡さずに呼び出すことができます。

Code Example

新しいコンソールアプリケーションを作成します。 Visual Studioを開き、新しいプロジェクトを作成してコンソールアプリケーションタイプを選択します。

C# Params(開発者にとっての動作原理):図 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# Params(開発者にとっての動作原理):図 2 - 上記コードの出力

IronPDFの紹介

Iron SoftwareのIronPDF C# PDFライブラリは、C#でPDFドキュメントを読み書きおよび管理できる多用途なライブラリです。 モバイル、ウェブサイト、デスクトップ、Dockerなど、あらゆる種類のモダンなアプリケーション開発をサポートしています。また、Windows、Linux、Unixなどの異なるOSもサポートしています。その方法はネイティブOSメソッドに依存しません。

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の生成

次に、上記の例からPDFドキュメントを生成するためにIronPDFを使用します。

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# Params(開発者にとっての動作原理):図 3 - 上記コードからの PDF 出力

ライセンス (無料トライアル利用可能)

IronPDFは、製品版で機能するためにライセンスキーが必要です。 試用キーはこちらのライセンスページから取得できます。 キーをappsettings.jsonに配置してください。

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

試用ライセンスをメールで受け取るためにメールアドレスを提供してください。

結論

C# の params キーワードは、可変個のパラメータを必要とするメソッドを処理するための柔軟な方法を提供します。 メソッドコールを簡素化し、コードの読みやすさと保守性を向上させます。 IronPDFと共に、クリーンなコードを書くための優れたスキルの組み合わせは、あらゆるプログラマーにとって優れた組み合わせです。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。