
C# Params (Geliştiriciler için Nasıl Çalışır)
params anahtar kelimesi, bir yöntemin değişken sayıda argüman kabul etmesine olanak tanıyan, .NET'te güçlü bir özelliktir. Bu, çeşitli parametre sayısı gerektiren yöntemler çağırıldığında sözdizimini önemli ölçüde basitleştirebilir. Bu kapsamlı kılavuzda, C# dilinde params anahtar kelimesini, söz dizimini, kullanım durumlarını ve en iyi uygulamaları keşfedeceğiz. Bu makalenin ilerleyen bölümlerinde, IronPDF kütüphanesini Iron Software'dan tanıtacak ve params anahtar kelimesini ve IronPDF kullanarak PDF'lerin nasıl üretileceğini açıklayacağız.
C# Params Argüman Türü Nedir?
C# alanında, yöntemler tipik olarak önceden belirlenmiş bir dizi parametreye bağlı kalır. Buna rağmen, yöntem için ayrılması gereken kesin bağımsız değişken sayısı üzerinde belirsizliğe düşüldüğü durumlar mevcut olabilir. "params" anahtar kelimesiyle tanışın, bu, bir dizi bağımsız değişkeni barındırabilecek bir yöntemin parametresini belirtmeyi mümkün kılan bir çözümdür. Bu işlevsellik, geliştiricinin, önceden kesin bağımsız değişken sayısının farkında olmadığında, bir dizi bilinmeyen veya isteğe bağlı sayıdaki parametrenin, aynı türde, bir yöntem tanımı içinde iletilmesini kolaylaştırır.
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
}
}Public Class ParamsExample
' Method accepting a variable number of string arguments using the params keyword
Public Sub PrintMessages(ParamArray ByVal messages() As String)
For Each message In messages
Console.WriteLine(message)
Next message
End Sub
End Class
' Usage
Friend Class Program
Public Shared Sub Main()
Dim example = New ParamsExample()
example.PrintMessages("Hello", "World", "!")
End Sub
' More examples
Public Shared Sub AddItemsToShoppingBasket(ParamArray ByVal items() As String)
' Implementation to add items to a shopping basket
End Sub
Public Shared Sub AddItemsSumToShoppingBasket(ParamArray ByVal sum() As Integer) ' Using params with int
' Implementation to add sum of items to the shopping basket
End Sub
End ClassAddItemsToShoppingBasket yöntemi, string parametrelerden oluşan değişken sayıda argümanla çağrılabilir. params anahtar kelimesi, geliştiricilerin isteğe bağlı parametreleri doğrudan geçmelerine olanak tanıyarak, dizi girişi oluşturmayı gerektirmeden yöntem çağrı söz dizimini basitleştirir.
class Program
{
public static void Main()
{
AddItemsToShoppingBasket("cake", "pizza", "cold drink");
AddItemsToShoppingBasket("snacks", "burger");
AddItemsToShoppingBasket(); // Valid even with zero parameters, using default value
}
}Friend Class Program
Public Shared Sub Main()
AddItemsToShoppingBasket("cake", "pizza", "cold drink")
AddItemsToShoppingBasket("snacks", "burger")
AddItemsToShoppingBasket() ' Valid even with zero parameters, using default value
End Sub
End ClassDikkat Edilmesi Gerekenler ve En İyi Uygulamalar
-
Params Parametresini Parametre Listesinin Sonunda Konumlandırın: Tavsiye edilen uygulama, params parametresini yöntemin parametre listesinin sonunda konumlandırmaktır. Bu uygulama, metot çağrıları sırasında karışıklıkların önlenmesini teşvik eder. Parametrelerin açıkça belirtilmesi gereken parametler params'tan önce gelmelidir ki etkili bir organizasyon sağlar.
-
Belirtiksiz Parametreleri Açıkça Belirtin:
paramsile bir yöntem çağırırken,paramsparametreleri için açık değer sağladığınızdan emin olun. Bu uygulama belirsizliği önler ve yöntemin gerekli argüman sayısı ile doğru bir şekilde çağrılmasını garanti eder. -
Belirsizliği Önlemek için Dikkatli Olun: Çeşitli aşırmaları veya aynı türde parametreleri olan yöntemlerde
paramskullanırken dikkatli olmak esastır. Derleyici, çağrılacak uygun yöntemi belirlemekte zorlanabilir ve bu da belirsizliği sonuçlandırabilir. -
Alternatif Yaklaşımları Keşfedin:
paramskolaylık sağlasa da, belirli senaryolarda alternatif yöntemleri değerlendirin.List<t>gibi koleksiyonları kullanmak, geliştirilmiş işlevsellik veya adlandırılmış parametrelerin geçilmesinin hedeflerinizle uyumlu olduğu durumlarda tercih edilebilir. -
İlgili Senaryolara Uygun Bir Şekilde Uygulayın: Parametre sayısının değişken olduğu ve farklı yöntem çağrıları arasında dalgalanabileceği senaryolarda
paramsdikkatlice kullanın. Bunun kullanımı, gereken parametre sayısı bilinmediğinde tercih edilmeli ve sabit ve bilindik bir parametre sayısı olduğunda kullanımdan kaçınılmalıdır.
Parametre Tipi İçin Tek Boyutlu Dizi
Ayrıca, tek boyutlu bir dizi ile çağrılarak AddItemsToShoppingBasket kullanılabilir.
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
}
}Friend Class Program
Public Shared Sub Main()
Dim 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
End Sub
End ClassAynı Türden Argümanların Virgülle Ayrılmış Dizisini Aktarma
AddItemsToShoppingBasket, aşağıda gösterildiği gibi, yöntem çağrısında bir liste/dizi değişkeni geçirerek çağrılabilir.
class Program
{
public static void Main()
{
// Example method signature
AddItemsToShoppingBasket("snacks", "burger", "snacks", "burger", "cold drink"); // Comma separated values
AddItemsToShoppingBasket("snacks");
}
}Friend Class Program
Public Shared Sub Main()
' Example method signature
AddItemsToShoppingBasket("snacks", "burger", "snacks", "burger", "cold drink") ' Comma separated values
AddItemsToShoppingBasket("snacks")
End Sub
End ClassTanımlanmış Türe Sahip Diziyi Aktarma
Dizi, params yönteminde tanımlanan türle aynı türde olmalıdır; aksi takdirde bir hata verilir.
// 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' Example that results in an error
AddItemsToShoppingBasket("snacks", 2, "burger") ' Error due to type mismatch
AddItemsToShoppingBasket(2, 3, 4) ' Error since params type is stringparams ile tanımlı türden farklı bir tür uyuşmazlığı varsa söz dizimi hatası oluşur.
Yöntemde Her Zaman Son Parametre
Bir yöntem imzasında params parametresinden sonra ek parametreye izin verilmez. Bir yöntem parametreleri bildiriminde sadece bir params argümanına izin verilir. Yanlış tanımlaması derleme hatalarına neden olur.
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
}
}
}Module Program
Sub Main(args As String())
' Example 1
Public Sub AddItemsToShoppingBasket(total As Double, ParamArray items As String())
' Works fine as `ParamArray` is the last parameter
End Sub
' Example 2, error scenario
' Public Sub AddItemsToShoppingBasket(ParamArray items As String(), total As Decimal, total As Integer)
' Error: `ParamArray` keyword must be the last parameter
' End Sub
End Sub
End ModuleSadece Bir params Anahtar Kelime
Bir yöntem imzasında sadece bir params parametresine izin verilir. Bir yöntem imzasında birden fazla params anahtar kelimesi bulunursa derleyici bir hata verir.
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
}
}
}Friend Class Program
Shared Sub Main(ByVal args() As String)
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' public static void AddItemsToShoppingBasket(params string[] items, params string[] quantity)
' {
' ' Compiler Error: Only one params keyword is allowed in the method signature
' }
End Sub
End ClassHiçbir Argüman Geçmeyebilirsiniz
Bir yöntemde params anahtar kelimesine sahip bir parametre varsa, herhangi bir argüman olmadan çağrılabilir ve derleyici bir hata vermez.
AddItemsToShoppingBasket(); // Works as expectedAddItemsToShoppingBasket() ' Works as expectedBir params argümanı olan herhangi bir parametre için, isteğe bağlı bir parametre olarak kabul edilir ve parametreler geçirilmeden çağrılabilir.
Kod Örneği
Yeni bir Konsol Uygulaması oluşturun. Visual Studio'yu aç, yeni bir proje oluştur ve konsol uygulaması türünü seç.

Şimdi aşağıdaki kodu ekle.
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);
}
}
}Imports System
Imports System.Collections.Generic
Module Program
Sub Main(args As String())
Dim cart As New List(Of String)()
Sub AddItemsToShoppingBasket(ParamArray samples As String())
For i As Integer = 0 To samples.Length - 1
cart.Add(samples(i))
Next
End Sub
' Caller code
Console.WriteLine("Enter the cart items as comma separated values")
Dim itemsString = Console.ReadLine()
If itemsString IsNot Nothing Then
Dim items = itemsString.Split(","c)
AddItemsToShoppingBasket(items)
End If
AddItemsToShoppingBasket("Sample1", "Sample2")
Console.WriteLine("-------------------------------------------------------")
Console.WriteLine("Display Cart")
For Each item In cart
Console.WriteLine(item)
Next
End Sub
End ModuleÇıktı

IronPDF Tanıtımı
Iron Software'dan IronPDF C# PDF kütüphanesi, C#'ta PDF belgelerini okuyabilen, yazabilen ve yönetebilen çok yönlü bir kütüphanedir. Mobil, Web sitesi, Masaüstü, Docker gibi modern uygulama geliştirmeleri için her türlü desteği sunar. Ayrıca Windows, Linux, Unix gibi çeşitli işletim sistemlerini de destekler. Yerel işletim sistemi yöntemlerine bağımlı değildir.
IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca üretir.
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 ClassKurulum
IronPDF kütüphanesi, NuGet paket yöneticisi konsolu ile aşağıdaki komutu kullanarak ya da Visual Studio paket yöneticisini kullanarak kurulabilir.
IronPDF kullanarak PDF Oluşturma
Şimdi yukarıdaki örnekten PDF belgesini oluşturmak için IronPDF kullanacağız.
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");
}
}Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronPdf
Friend Class Program
Public Shared Sub Main()
Dim cart As New List(Of String)()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' 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")
Dim itemsString = Console.ReadLine()
' Read the items
If itemsString IsNot Nothing Then
Dim items = itemsString.Split(",").ToArray()
AddItemsToShoppingBasket(items)
End If
' Add to cart
AddItemsToShoppingBasket("Sample1", "Sample2")
Console.WriteLine("------------------------------------------------")
Console.WriteLine("Display Cart")
Console.WriteLine("------------------------------------------------")
Dim name As String = "Sam"
Dim count = cart.Count
Dim content As String = $"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} items in the cart.</p>
" & String.Join(vbLf, cart.Select(Function(x) $"<p>{x}</p>")) & "
</body>
</html>"
' Create a new PDF document
Dim pdfDoc = New ChromePdfRenderer()
pdfDoc.RenderHtmlAsPdf(content).SaveAs("cart.pdf")
End Sub
End ClassYukarıdaki kodda, sepet öğeleri için bir HTML belgesi oluşturuyor ve ardından IronPDF kullanarak bunu bir PDF belgesi olarak kaydediyoruz.
Çıktı

Lisanslama (Ücretsiz Deneme Mevcuttur)
IronPDF, üretimde çalışmak için bir lisans anahtarına ihtiyaç duyar. Deneme anahtarı için lisans sayfasından buradan edinilebilir. Anahtarı appsettings.json dosyasına yerleştirin.
"IronPdf.LicenseKey": "your license key"
Deneme lisansının e-posta adresinize gönderilmesi için email ID'nizi sağlayın.
Sonuç
C# dilindeki params anahtar kelimesi, değişken sayıda parametre gerektiren yöntemleri yönetmek için esnek bir yol sunar. Bu, metot çağrılarını basitleştirir ve kodu daha okunabilir ve sürdürülebilir hale getirir. IronPDF ile birlikte, temiz kod yazmak için her programcı için harika bir yetenek kombinasyonudur.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


