IRONSOFTWAREHOME
개발자 업데이트

C# Params (개발자를 위한 작동 원리)

제이콥 멜러, 팀 아이언 최고기술책임자
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가 편리함을 제공하는 반면, 특정 시나리오에서는 대체 메서드를 고려하십시오. List<t>와 같은 컬렉션을 사용하는 것이 향상된 기능을 위해 또는 명명된 매개변수를 전달하는 것이 목표에 부합하는 경우에 더 나을 수 있습니다.

  • 관련 시나리오에 신중하게 적용: 매개변수 개수가 가변적이고 다양한 메서드 호출에서 달라질 수 있는 경우 params를 신중하게 적용하십시오. 매개변수 수가 예측할 수 없는 상황에 사용을 예약하고, 매개변수 수가 고정되고 알려져 있을 때는 사용을 피하십시오.

매개변수 유형에 대한 1차원 배열

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");
    }
}

정의된 유형의 배열 전달

배열은 매개변수 메서드에서 정의된 것과 동일한 유형을 포함해야 합니다; 그렇지 않으면 오류가 발생합니다.

// 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# 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 등 다양한 운영 체제를 지원합니다. 기본 운영 체제 메서드에 의존하지 않습니다.

IronPDF는 원래 레이아웃과 스타일을 정확히 보존하여 HTML을 PDF로 변환하는 데 탁월합니다. 보고서, 송장 및 설명서와 같은 웹 기반 콘텐츠에서 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");
    }
}

설치

NuGet 패키지 관리자 콘솔을 사용하여 아래 명령을 통해 IronPDF 라이브러리를 설치하거나 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

체험판 라이센스를 이메일 ID에 전달받기 위해 이메일 ID를 제공하십시오.

결론

C#에서 params 키워드는 불변수의 매개변수를 요구하는 메서드를 처리하는 유연한 방법을 제공합니다. 이는 메서드 호출을 단순화하고 코드를 더 읽기 쉽고 유지 보수하기 쉽게 만듭니다. IronPDF와 함께 작업하면, 이는 모든 프로그래머가 깨끗한 코드를 작성하는 데 유용한 기술 조합이 됩니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

...
더 읽어보기

관련 기사

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

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.