Altbilgi içeriğine atla
.NET YARDıM

C# Varsayılan Parametreler (Geliştiriciler İçin Nasıl Çalışır)

Bugün, C# dünyasına dalacağız ve güçlü bir özellik olan Varsayılan Parametreler'i öğreneceğiz. Kolay anlaşılır bir şekilde ayıracağız, C#'ta varsayılan argüman değeri ve isteğe bağlı argümanlar kavramına odaklanacağız.

Varsayılan Parametreler Nelerdir?

C#'ta, varsayılan parametreler, diğer adıyla isteğe bağlı argüman parametreleri, bir yöntem tanımında sabit argümanlara değer atamanıza olanak tanır. Eğer fonksiyon çağrıldığında bu parametre için bir argüman sağlanmazsa, varsayılan olan kullanılacaktır.

Varsayılan bir parametre değeri, aşağıda gösterilen kod parçasında olduğu gibi yöntem tanımında ayarlanır:

public void Greet(string name = "Friend")
{
    Console.WriteLine("Hello, " + name);
}
public void Greet(string name = "Friend")
{
    Console.WriteLine("Hello, " + name);
}
Public Sub Greet(Optional ByVal name As String = "Friend")
	Console.WriteLine("Hello, " & name)
End Sub
$vbLabelText   $csharpLabel

Burada, name parametresi isteğe bağlı bir özelliktir. "Friend" dizesi varsayılan değerdir. Eğer Greet()'yı bir argüman iletmeyerek çağırırsanız, name için "Arkadaş" değeri kullanılacaktır.

Gerekli Parametreler ve İsteğe Bağlı Parametreler

Gerekli Parametreler

Gerekli bir parametre, fonksiyon veya yöntem çağrıldığında dahil edilmesi gereken bir parametredir. Varsayılan bir değeri yoktur, bu nedenle her zaman bir argüman sağlanmalıdır. Derleyici, fonksiyon veya yöntem çağrısını kontrol eder ve gerekli parametre sağlanmazsa derleme zamanı hatası verir.

Bir örnek düşünelim:

// Method with required parameters
public void IntroduceYourself(string firstName, string lastName)
{
    Console.WriteLine("Hello, my name is " + firstName + " " + lastName);
}
// Method with required parameters
public void IntroduceYourself(string firstName, string lastName)
{
    Console.WriteLine("Hello, my name is " + firstName + " " + lastName);
}
' Method with required parameters
Public Sub IntroduceYourself(ByVal firstName As String, ByVal lastName As String)
	Console.WriteLine("Hello, my name is " & firstName & " " & lastName)
End Sub
$vbLabelText   $csharpLabel

Bu yöntemde, firstName ve lastName ikisi de gerekli parametrelerdir. Eğer IntroduceYourself'yı çağırırsanız, her iki parametre için de değer sağlamanız gerekir. Eğer argümanları atlar iseniz, bir derleme zamanı hatası alırsınız.

IntroduceYourself("John", "Doe"); // Following call is correct
// IntroduceYourself("John"); // Error: lastName is missing
IntroduceYourself("John", "Doe"); // Following call is correct
// IntroduceYourself("John"); // Error: lastName is missing
IntroduceYourself("John", "Doe") ' Following call is correct
' IntroduceYourself("John"); // Error: lastName is missing
$vbLabelText   $csharpLabel

İsteğe Bağlı Parametreler

Diğer taraftan, isteğe bağlı parametreler esneklik sağlar. Yöntem tanımı içinde ayarlanmış bir varsayılan değere sahiptirler ve bu, yöntem bu parametre olmadan çağrıldığında kullanılır.

Örneğin, IntroduceYourself yöntemini, lastName parametresini isteğe bağlı yapmak için değiştirelim:

// Method with an optional parameter
public void IntroduceYourself(string firstName, string lastName = "Doe")
{
    Console.WriteLine("Hello, my name is " + firstName + " " + lastName);
}
// Method with an optional parameter
public void IntroduceYourself(string firstName, string lastName = "Doe")
{
    Console.WriteLine("Hello, my name is " + firstName + " " + lastName);
}
' Method with an optional parameter
Public Sub IntroduceYourself(ByVal firstName As String, Optional ByVal lastName As String = "Doe")
	Console.WriteLine("Hello, my name is " & firstName & " " & lastName)
End Sub
$vbLabelText   $csharpLabel

Artık sadece firstName parametresi ile IntroduceYourself çağrılabilir. Eğer bunu yaparsanız, lastName varsayılan olarak "Doe" olacaktır.

IntroduceYourself("John", "Smith"); // Outputs: Hello, my name is John Smith
IntroduceYourself("John");          // Outputs: Hello, my name is John Doe
IntroduceYourself("John", "Smith"); // Outputs: Hello, my name is John Smith
IntroduceYourself("John");          // Outputs: Hello, my name is John Doe
IntroduceYourself("John", "Smith") ' Outputs: Hello, my name is John Smith
IntroduceYourself("John") ' Outputs: Hello, my name is John Doe
$vbLabelText   $csharpLabel

Opsiyonel argümanları sağladığınızda, varsayılan değeri geçersiz kılar.

Yöntem bildiriminde, zorunlu parametrelerin her zaman isteğe bağlı parametrelerden önce listelenmesi gerektiğini unutmayın.

Farkı Anlamak

Zorunlu ve isteğe bağlı parametreler arasındaki ayrım önemlidir çünkü bir yöntemi nasıl çağırabileceğinizi etkiler. İsteğe bağlı parametreler esneklik sağlar ve gerekmediğinde belirli parametreler için girdi atlamanıza izin verir. Öte yandan, zorunlu parametreler, gerekli verilerin her zaman fonksiyona veya metoda sağlanmasını garanti eder, böylece çalışma zamanı hatalarını önler.

Varsayılan Parametreleri Kullanma Kuralları

Varsayılan parametrelerle bir yöntem tanımlarırken hatırlanması gereken bazı önemli kurallar vardır:

  1. Varsayılan değer bir sabit ifade olmalıdır. Değişkenler veya yöntem çağrıları kullanamazsınız.
  2. Tüm isteğe bağlı parametreler, zorunlu parametrelerden sonra, parametre listesinin sonunda tanımlanmalıdır.
  3. İsteğe bağlı parametreleri içeren bir yöntemi çağırdığınızda, isteğe bağlı parametreler için atlanan argümanları, bu parametrelerin tanımlandığı sırayla sağlayabilir veya adlandırılmış argümanlar kullanabilirsiniz.
  4. İsteğe bağlı bir argüman değeri sağlanmadığında varsayılan değer kullanılacaktır.

Opsiyonel argümanlar için aşağıdaki kod örneğini dikkate alın:

static void Main(string[] args)
{
    ShowMessage("Hello");
    ShowMessage("Hello", "John");
}

public static void ShowMessage(string msg, string name = "Friend")
{
    Console.WriteLine(msg + ", " + name);
}
static void Main(string[] args)
{
    ShowMessage("Hello");
    ShowMessage("Hello", "John");
}

public static void ShowMessage(string msg, string name = "Friend")
{
    Console.WriteLine(msg + ", " + name);
}
Shared Sub Main(ByVal args() As String)
	ShowMessage("Hello")
	ShowMessage("Hello", "John")
End Sub

Public Shared Sub ShowMessage(ByVal msg As String, Optional ByVal name As String = "Friend")
	Console.WriteLine(msg & ", " & name)
End Sub
$vbLabelText   $csharpLabel

Main yönteminde, ShowMessage iki kez çağırılır. İlk seferde yalnızca bir argüman geçiriyoruz, bu yüzden name parametresi varsayılan "Arkadaş" değerini kullanıyor. İkinci seferde iki argüman geçiyoruz, bu yüzden 'John' varsayılan değer yerine kullanılır.

Adlandırılmış ve İsteğe Bağlı Parametreler

C#, adlandırılmış ve isteğe bağlı parametreleri de destekler. Adlandırılmış parametreler, bir parametre için değeri konumdan ziyade isimle belirtmenize izin verir. Bu, bir yöntem birkaç isteğe bağlı parametreye sahip olduğunda yardımcı olabilir ve birine değer sağlamak, diğerlerine sağlamamak isteyebilirsiniz.

Aşağıdaki örnekte, ShowGreetings iki isteğe bağlı parametreye sahiptir:

public static void ShowGreetings(string greeting = "Hello", string name = "Friend")
{
    Console.WriteLine(greeting + ", " + name);
}
public static void ShowGreetings(string greeting = "Hello", string name = "Friend")
{
    Console.WriteLine(greeting + ", " + name);
}
Public Shared Sub ShowGreetings(Optional ByVal greeting As String = "Hello", Optional ByVal name As String = "Friend")
	Console.WriteLine(greeting & ", " & name)
End Sub
$vbLabelText   $csharpLabel

Bu yöntemi sadece ilk parametreyle çağırabiliriz:

ShowGreetings("Hi");
ShowGreetings("Hi");
ShowGreetings("Hi")
$vbLabelText   $csharpLabel

Veya greeting argümanını atlayarak, name için bir değer sağlamak adına isimli argümanlar kullanabiliriz:

ShowGreetings(name: "John");
ShowGreetings(name: "John");
ShowGreetings(name:= "John")
$vbLabelText   $csharpLabel

Adlandırılmış parametreleri kullanmanın faydası nedir?

C# içindeki adlandırılmış parametreler birçok fayda sağlar:

  1. Okunabilirlik: İsimli parametreler kodunuzu daha okunabilir ve anlaşılır hale getirebilir. Parametrenin adını belirterek, her bir argümanın neyi temsil ettiği açıkça ortaya koyarsınız. Bu, birçok parametreli yöntemlerde özellikle faydalı olabilir.
  2. Esnek Argüman Sırası: İsimli parametrelerle, argümanları sadece yöntem tanımında parametrelerin göründüğü sırada değil, istediğiniz sırada sağlayabilirsiniz. Bu, kodunuzu daha esnek hale getirebilir ve bazı durumlarda okunabilirliği artırabilir.
  3. İsteğe Bağlı Parametrelerle Kullanım Kolaylığı: İsimli parametreler sıklıkla isteğe bağlı parametrelerle birlikte kullanılır. Bir yöntem birkaç isteğe bağlı parametreye sahip olduğunda, adlandırılmış parametreleri kullanarak bazı isteğe bağlı parametreler için değerler, diğerleri için sağlamayabilirsiniz. Bu şekilde, her isteğe bağlı parametreye bir değer sağlamanıza gerek yoktur, yalnızca varsayılan değerlerinden değiştirmek istediğiniz durumlar dışında.

Adlandırılmış parametrelerin kullanımına dair bir başka örnek burada:

// Method Declaration
public void RegisterUser(string username, string password, string email = "", bool subscribeToNewsletter = false)
{
    // Method body
}

// Method Call
RegisterUser(username: "JohnDoe", password: "password123", subscribeToNewsletter: true);
// Method Declaration
public void RegisterUser(string username, string password, string email = "", bool subscribeToNewsletter = false)
{
    // Method body
}

// Method Call
RegisterUser(username: "JohnDoe", password: "password123", subscribeToNewsletter: true);
' Method Declaration
Public Sub RegisterUser(ByVal username As String, ByVal password As String, Optional ByVal email As String = "", Optional ByVal subscribeToNewsletter As Boolean = False)
	' Method body
End Sub

' Method Call
RegisterUser(username:= "JohnDoe", password:= "password123", subscribeToNewsletter:= True)
$vbLabelText   $csharpLabel

Yukarıdaki kodda, email isteğe bağlı bir parametredir ve biz bu parametreyi atladık. Listede son parametre olmasına rağmen subscribeToNewsletter'yı true olarak ayarlamayı seçtik. Bir isimli parametre kullanmak her argümanın neyi temsil ettiğini açıkça belirtir ve sadece sağlamak istediğimiz argümanları belirtmemize olanak tanır.

Varsayılan Parametreler ve Yöntem Aşırı Yükleme

Yöntem Aşırı Yükleme Nedir?

C#'ta yöntem aşırı yükleme veya fonksiyon aşırı yükleme, aynı ada sahip ancak farklı parametre kümelerine sahip birden fazla yöntem tanımlamanıza olanak tanıyan bir özelliktir. Bu, aynı yöntem adı ile farklı işlemler gerçekleştirmenize olanak tanır, böylece kodunuzu daha sezgisel ve kullanımı kolay hale getirebilirsiniz.

Aşağıdaki aşırı yüklenmiş yöntemler kod örneğine bakın:

public void DisplayMessage(string message)
{
    Console.WriteLine(message);
}

public void DisplayMessage(string message, string name)
{
    Console.WriteLine(message + ", " + name);
}
public void DisplayMessage(string message)
{
    Console.WriteLine(message);
}

public void DisplayMessage(string message, string name)
{
    Console.WriteLine(message + ", " + name);
}
Public Sub DisplayMessage(ByVal message As String)
	Console.WriteLine(message)
End Sub

Public Sub DisplayMessage(ByVal message As String, ByVal name As String)
	Console.WriteLine(message & ", " & name)
End Sub
$vbLabelText   $csharpLabel

Yukarıdaki örnekte, DisplayMessage yöntemi aşırı yüklenmiştir. Yöntemin bir versiyonu tek bir string parametresi alır ve diğer versiyon iki string parametresi alır.

Varsayılan Parametreleri Aşırı Yükleme Yerine Kullanma

Varsayılan parametreler genellikle aşırı yükleme yerine alternatif olarak kullanılabilir. Yönteminizdeki bir parametre için varsayılan bir değer sağlayarak, arayanın o parametreyi sağlamak isteyip istemediğini seçmesine izin verebilirsiniz. Bu, yöntem aşırı yüklenmesiyle aynı esnekliği sağlar ancak daha az kodla.

İşte yukarıdaki örneği aşırı yükleme yerine bir varsayılan parametre kullanarak nasıl yeniden yazabileceğiniz:

public void DisplayMessage(string message, string name = "Friend")
{
    Console.WriteLine(message + ", " + name);
}
public void DisplayMessage(string message, string name = "Friend")
{
    Console.WriteLine(message + ", " + name);
}
Public Sub DisplayMessage(ByVal message As String, Optional ByVal name As String = "Friend")
	Console.WriteLine(message & ", " & name)
End Sub
$vbLabelText   $csharpLabel

Artık DisplayMessage bir veya iki argümanla çağrılabilir:

DisplayMessage("Hello");
DisplayMessage("Hello", "John");
DisplayMessage("Hello");
DisplayMessage("Hello", "John");
DisplayMessage("Hello")
DisplayMessage("Hello", "John")
$vbLabelText   $csharpLabel

İlk çağrıda, name parametresi varsayılan olarak "Arkadaş" değeri kullanıyor. İkinci çağrıda, sağlanan argüman 'John' kullanılır.

Unutmayın, bir varsayılan parametrenin varsayılan değeri bir sabit ifade olmalıdır, bu da değişken veya yöntem çağrısı olamayacağı anlamına gelir. Çünkü bu değer derleme zamanında bilinmelidir.

Iron Software Suite

Iron Software suite'e dalalım, ihtiyaçınıza yönelik çözümler sunan PDF çözümleri için IronPDF kütüphanesi, C# Excel işlemleri için IronXL, gelişmiş metin tanıma için IronOCR, ve barkod oluşturma için IronBarcode içerir. Bu güçlü kütüphaneler, C# uygulamalarınızın yeteneklerini artırmanıza yardımcı olmak için özel olarak tasarlanmıştır. Makalede tartıştığımız kavramlarla, varsayılan parametreler, adlandırılmış argüman belirtimleri ve yöntem aşırı yükleme gibi konularla kolayca ilişkili olabilirler.

IronPDF: Bu, HTML'yi PDF'e IronPDF ile dönüştüren C# kütüphanesidir. Varsayılan ve isteğe bağlı parametreleri anlamak, IronPDF kullanırken kritik öneme sahip olabilir. IronPDF'teki birçok yöntem isteğe bağlı parametrelere sahip olacak ve bu da yöntem imzalarını aşırı karmaşık hale getirmeden geniş bir özelleştirme sağlar. Bu konuyla ilgili daha fazla bilgiyi IronPDF HTML to PDF eğitimi'nde bulabilirsiniz.

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
$vbLabelText   $csharpLabel

IronXL: Bu kütüphane, C# uygulamanızın çeşitli formatlarda Excel dosyalarını okumasına, yazmasına ve manipüle etmesine olanak tanır. IronXL'deki yöntemler, bir dosyayı hangi formatta kaydedeceğiniz veya verileri içe aktarırken başlıkları dahil edip etmeyeceğiniz gibi birçok farklı parametreyse sahip olabilir. Hücre aralıkları, biçimlendirme seçenekleri ve diğerleri için belirli adlandırılmış ve isteğe bağlı parametrelerin yaygın olarak kullanıldığını da görebilirsiniz.
IronOCR: C# uygulamalarınızda görüntülerden ve PDF'lerden metin ve barkod okuyabilen gelişmiş bir Optik Karakter Tanıma (OCR) kütüphanesidir. IronOCR'in yöntemleri OCR sürecinin dilini, uygulanacak hata düzeltme seviyesini ve benzeri yönleri kontrol etmek için isteğe bağlı parametrelere sahip olabilir. Bu parametreleri anlamak, OCR sürecini daha iyi kontrol etmenizi sağlar.
IronBarcode: Bu kütüphane, .NET uygulamalarında barkod oluşturma ve okuma için çok yönlü bir araçtır. Burada da, varsayılan parametreleri anlamak önemlidir. Örneğin, bir barkod oluştururken, barkodun boyutunu, formatını veya değerini belirtmek için isteğe bağlı parametreleriniz olabilir.

Sonuç

Sonuç olarak, C#'ta varsayılan ve isteğe bağlı parametrelerin kullanımını öğrenmek, programlama verimliliğinizi ve kodunuzu daha çeşitli hale getirebilir. Bu kavramlar C# için temeldir.

Bu kütüphanelerden bahsederken, her birinin ayrı lisanslarının $799'dan başladığını ve bu kütüphanelerin ayrıca Iron Software ürünlerinin ücretsiz denemesini sunduğunu unutmayın. Ancak, Iron Software bir paket anlaşması sunuyor: Tüm paketi sadece iki bireysel lisans ücretiyle edinebilirsiniz.

Sıkça Sorulan Sorular

Varsayılan parametreler C#'da kod verimliliğini nasıl artırır?

C#'da varsayılan parametreler, geliştiricilere yöntem argümanlarına önceden tanımlanmış değerler atama olanağı vererek, birden fazla yöntem aşırı yüklemesine duyulan ihtiyaçı azaltır ve kod bakımını basitleştirir.

C#'da varsayılan parametreler, adlandırılmış parametrelerle kullanılabilir mi?

Evet, varsayılan parametreler C#'da adlandırılmış parametrelerle birleştirilebilir, geliştiricilere yalnızca gerekli argümanları isimleriyle belirtme olanağı sunarak kod okunabilirliğini ve esnekliğini artırır.

C#'da isteğe bağlı parametreleri kullanmanın avantajları nelerdir?

C#'da isteğe bağlı parametreler, belirli argümanların önceden tanımlanmış değerlere varsayılması yoluyla atlanmasını sağlayarak esneklik sağlar, yöntem çağrısını basitleştirir ve kod fazlalığını azaltır.

Yöntem aşırı yüklemesi ile C#'da varsayılan parametrelerin kullanımı arasındaki farklar nelerdir?

Yöntem aşırı yüklemesi, aynı ada sahip ama farklı parametrelere sahip birden fazla yöntem oluşturmayı içerirken, varsayılan parametreler, atlanmış argümanlar için yedek değerler sağlayarak, tek bir yöntemin birçok senaryoyu yönetmesine olanak tanır.

C#'da varsayılan parametreler kullanılırken uyulması gereken kurallar nelerdir?

Anahtar kurallar arasında, varsayılan değerlerin sabit ifadeler olduğundan emin olmak, isteğe bağlı parametrelerin zorunlu olanlardan sonra yerleştirilmesi ve atlanmış parametreleri belirtmek için adlandırılmış argümanların kullanılması bulunur.

Varsayılan parametreler IronPDF kütüphanesinin kullanımını nasıl optimize edebilir?

IronPDF'de varsayılan parametreler, geliştiricilere her argümanı belirtmek zorunda kalmadan, HTML içeriği veya dosya yolları gibi ayarlamaları yapma olanağı tanıyarak, PDF oluşturmayı kolaylaştırır ve verimli bir şekilde çıktıyı özelleştirir.

Adlandırılmış parametreler kod okunabilirliğini nasıl artırır?

Adlandırılmış parametreler, argümanların pozisyon yerine isimleriyle belirtilmesini sağlar, bu da kodun daha okunabilir olmasını ve argüman sırasıyla ilgili hataları azaltır.

Varsayılan parametrelerde ustalaşmak neden geliştiriciler için kritik önem taşır?

Varsayılan parametrelerde ustalaşmak, yöntem çağrılarında esneklik sağlayarak programlama verimliliğini artırdığı, gerekli verilerin sağlanmasını ve kod yapısını basitleştirdiği için kritik önem taşır.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara