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 hakkında bilgi edineceğiz. C#'ta varsayılan argüman değeri ve isteğe bağlı argümanlar kavramına odaklanarak, anlaşılması kolay bir şekilde inceleyeceğiz.

Varsayılan Parametreler Nedir?

C#'ta, varsayılan parametreler, diğer adıyla isteğe bağlı argüman parametreleri, bir metod tanımında sabit argümanlara değer atamanıza olanak tanır. Fonksiyon çağrıldığında o parametre için bir argüman belirtilmezse, varsayılanı kullanılacaktır.

Aşağıdaki kod parçası, metod tanımında bir varsayılan parametre değerinin nasıl belirlendiğini göstermektedir:

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. Dize "Friend", varsayılan değerdir. Eğer Greet() çağrısını bir argüman geçmeden yaparsanız, name için "Arkadaş" değeri kullanılacaktır.

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

Gerekli Parametreler

Gerekli bir parametre, bir fonksiyonun veya yöntemin çağrıldığında dahil edilmesi gereken bir parametredir. Bir varsayılan değeri yoktur, bu yüzden 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 bir derleme zamanı hatası oluşur.

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, hem firstName hem de lastName gerekli parametrelerdir. Eğer IntroduceYourself çağrısını yaparsanız, her iki parametre için de değer sağlamanız gerekir. Argümanları atladığınızda, 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

Opsiyonel Parametreler

Öte yandan, isteğe bağlı parametreler esneklik sağlar. Metot tanımı içerisinde belirlenen varsayılan bir değere sahiptirler, bu da metoda parametre geçmeden çağrıldığında kullanılır.

Örneğin, lastName parametresini isteğe bağlı hale getirmek için IntroduceYourself yöntemini 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ısı yapabilirsiniz. Eğer öyle 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

İsteğe bağlı argümanları sağladığınızda, varsayılan değerin yerine geçer.

Unutmayın ki, yöntem beyanında gerekli parametreler her zaman isteğe bağlı parametrelerden önce listelenmelidir.

Farkı Anlamak

Gerekli ve isteğe bağlı parametreler arasındaki ayrım, bir methodun nasıl çağrılabileceğini etkilediğinden önemlidir. İsteğe bağlı parametreler, gerekli olmadıklarında belirli parametreler için giriş atlama imkanı sağlar. Diğer taraftan, gerekli parametreler, fonksiyon veya metotta her zaman gerekli verilerin sağlanmasını garanti eder ve bu, çalışma zamanı hatalarını önlemeye yardımcı olur.

Varsayılan Parametreleri Kullanma Kuralları

Varsayılan parametrelerle bir method tanımlarken hatırlamanız gereken bazı temel kurallar vardır:

  1. Varsayılan değer bir sabit ifade olmalıdır. Değişkenler veya method çağrıları kullanamazsınız.
  2. Tüm isteğe bağlı parametreler, herhangi bir gerekli parametreden sonra parametre listesinin sonunda tanımlanmalıdır.
  3. İsteğe bağlı parametre içeren bir method çağırırken, tanımlandıkları sırayla isteğe bağlı parametreler için atlanmış argümanları verebilirsiniz veya adlandırılmış argümanlar kullanabilirsiniz.
  4. İsteğe bağlı argüman değeri sağlanmazsa varsayılan değer kullanılacaktır.

İsteğe bağlı argümanlar için aşağıdaki kod parçasını 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 seferinde sadece bir argüman geçtiğimiz için, name parametresi varsayılan değeri olan "Arkadaş"'ı kullanır. İkinci seferde ise iki argüman sağlanır, bu yüzden "John" varsayılan değerin yerine kullanılır.

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

C# aynı zamanda adlandırılmış ve isteğe bağlı parametreleri de destekler. Adlandırılmış parametreler, bir parametre için bir değeri ad ile belirtmenize olanak tanır, pozisyonla belirlemenize gerek kalmaz. Bu, bir metodun birçok isteğe bağlı parametresi olduğunda ve yalnızca biri için değer sağlamak istediğinizde yardımcı olabilir.

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 metodu yalnızca ilk parametre ile çağırabiliriz:

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

Veya name için bir değer sağlamak ve greeting argümanını atlamak için adlandırılmış argümanlar kullanabiliriz:

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

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

C#'ta adlandırılmış parametreler birkaç avantaj sağlar:

  1. Improved Readability: Adlandırılmış parametreler, kodunuzu okumayı ve anlamayı kolaylaştırabilir. Parametrenin adını belirterek, her argümanın neyi temsil ettiğini açık hale getirirsiniz. Bu, özellikle birden çok parametreye sahip yöntemlerde avantajlı olabilir.
  2. Flexible Argument Order: Adlandırılmış parametreler ile, argümanları parametrelerin yöntemdeki duyuru sırasına göre değil istediğiniz sırada sağlayabilirsiniz. Bu, kodunuzu daha esnek yapabilir ve bazı durumlarda okunabilirliğini artırabilir.
  3. Ease with Optional Parameters: Adlandırılmış parametreler genellikle isteğe bağlı parametrelerle kullanılır. Bir metodun birçok isteğe bağlı parametresi olduğunda, adlandırılmış parametrelerle bazı isteğe bağlı parametreler için değerler verebilir, diğerleri için vermeyebilirsiniz. Bu şekilde, her isteğe bağlı parametre için bir değer sağlamanız gerekmez, sadece varsayılan değerlerinden değiştirmek istediğiniz parametreler için.

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

// 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 atlanmıştır, ve subscribeToNewsletter'yu true olarak ayarlamayı seçtik, listenin son parametresi olmasına rağmen. Adlandırılmış bir parametre kullanmak, her argümanın neyi temsil ettiğini açıklar ve sadece sağlamak istediğimiz argümanları belirtmemize olanak tanır.

Varsayılan Parametreler ve Method Aşırı Yükleme

Method Aşırı Yükleme Nedir?

C#'ta, method aşırı yükleme (veya fonksiyon aşırı yükleme), aynı isimde birkaç metoda farklı parametre setleriyle tanımlamanıza olanak tanıyan bir özelliktir. Bu, aynı metoda farklı işlemler yapma olanağı tanır, böylece kodunuz daha sezgisel ve kullanımı daha kolay hale gelir.

Aşağıdaki aşırı yüklenmiş yöntemlerin kod örneğini inceleyin:

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 versiyonu iki string parametresi alır.

Varsayılan Parametreler Kullanarak Aşırı Yükleme Yerine

Varsayılan parametreler genellikle aşırı yüklemeye bir alternatif olarak kullanılabilir. Yönteminizde bir parametre için varsayılan bir değer sağlayarak, arayanın o parametreyi sağlamayı seçmesine izin verebilirsiniz. Bu, yönteminizin method aşırı yüklemesi kadar esnek olmasını sağlayabilir, ancak daha az kod ile.

Aynı örneği aşırı yükleme yerine bir varsayılan parametre kullanarak nasıl yeniden yazabileceğiniz aşağıda:

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

Şimdi, 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 değeri olan "Arkadaş"'ı kullanır. İkinci çağrıda ise sağlanan "John" argümanı kullanılır.

Unutmayın, bir varsayılan parametre için varsayılan değer sabit bir ifade olmalıdır; bu, bir değişken veya method çağrısı olamayacağı anlamına gelir. Bunun nedeni, değerin derleme zamanında bilinmesi gerektiği içindir.

Iron Software Suite

Iron Software suite'ine dalalım, bu dizin C# uygulamalarınızın yeteneklerini genişletmenize yardımcı olmak için tasarlanmış güçlü kütüphaneler içerir, örneğin 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. Bu güçlü kütüphaneler özellikle yerinde kullanılmak için tasarlanmıştır. Bunlar, makalede tartıştığımız varsayılan parametreler, adlandırılmış argüman belirtilmeleri ve method aşırı yüklemeleri gibi kavramlarla kolayca ilişkilendirilebilir.

IronPDF: Bu, IronPDF kullanarak HTML'yi PDF'ye dönüştürmek için bir C# kütüphanesidir. Varsayılan ve isteğe bağlı parametreleri anlamak, IronPDF kullanırken kritik olabilir. IronPDF'deki birçok metod isteğe bağlı parametreler içerebilir ve bu, karmaşık olmayan metod imzaları ile geniş kapsamlı özelleştirmelere izin verir. Buna dair daha fazla bilgi IronPDF HTML'den PDF'ye tutorial'ında bulunabilir.

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 Excel dosyalarını çeşitli formatlarda okumasını, yazmasını ve manipüle etmesini sağlar. IronXL içindeki yöntemler, bir dosyanın hangi formatta kaydedileceği veya veri içe aktarırken üst bilgilerin dahil edilip edilmeyeceği gibi farklı parametrelere sahip olabilir. Ayrıca, hücre aralıklarını belirtmek, formatlama seçeneklerini ayarlamak ve daha fazlasını yapmak için adlandırılmış ve isteğe bağlı parametrelerin yoğun şekilde kullanıldığını görebilirsiniz.
IronOCR: İleri seviye Optik Karakter Tanıma (OCR) kütüphanesi olup, C# uygulamalarınızda metin ve barkodları resimlerden ve PDF'lerden okuyabilir. IronOCR'nin yöntemleri, OCR sürecinin çeşitli yönlerini kontrol etmek amacıyla, metnin dili, uygulanacak hata düzeltme seviyeleri gibi isteğe bağlı parametrelere sahip olabilir. Bu parametreleri anlamak OCR işlemi üzerinde daha iyi kontrol sağlar.
IronBarcode: Bu kütüphane, .NET uygulamalarında barkod okuma ve oluşturma için çok yönlü bir araçtır. Burada da varsayılan parametreleri anlamak çok önemlidir. Örneğin, bir barkod oluştururken, büyüklüğü, formatı veya değerini belirtmek için isteğe bağlı parametrelere sahip olabilirsiniz.

Sonuç

Sonuç olarak, C#'ta varsayılan ve isteğe bağlı parametreleri kullanmak konusunda ustalaşmak, programlama verimliliğinizi önemli ölçüde artırabilir ve kodunuzun çok yönlülüğünü artırabilir. Bu kavramlar C# için temel niteliğindedir.

Bu kütüphanelerden bahsederken, her birinin bireysel lisanslarının $999'dan başladığını hatırlatmak isteriz, ve bu kütüphaneler ayrıca Iron Software ürünlerinin ücretsiz deneme fırsatını sunar. Ancak, Iron Software bir paket anlaşma sunar: Tüm suite'i tek bir lisansın fiyatından daha düşük bir fiyatla edinebilirsiniz.

Sıkça Sorulan Sorular

C#'ta varsayılan parametreler kod verimliliğini nasıl artırır?

C#'ta varsayılan parametreler, geliştiricilerin yöntem argümanlarına önceden tanımlanmış değerler atamasına olanak tanır, birden fazla yöntem aşırı yüklemesi ihtiyacını azaltır ve kodun bakımını basitleştirir.

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

Evet, C#'ta varsayılan parametreler adlandırılmış parametrelerle birleştirilebilir, böylece geliştiriciler yalnızca gerekli argümanları isimlendirerek belirtebilir ve kod okunabilirliğini ve esnekliğini artırır.

C#'ta isteğe bağlı parametrelerin kullanmanın faydaları nelerdir?

C#'ta isteğe bağlı parametreler, belirli argümanların belirtilmemesine izin vererek esneklik sağlar. Bu argümanlar varsayılan olarak önceden tanımlanmış değerlere döner, böylelikle yöntem çağrısını basitleştirir ve kod tekrarını azaltır.

Yöntem aşırı yüklemesi, C#'ta varsayılan parametrelerin kullanılmasından nasıl farklıdır?

Yöntem aşırı yüklemesi, aynı isimde ancak farklı parametrelerle birden fazla yöntem oluşturmaya yönelikken, varsayılan parametreler tek bir yöntemin birden fazla senaryoyu, ihmal edilen argümanlar için yedek değerler sağlayarak ele almasına olanak tanır.

C#'ta varsayılan parametreler kullanırken hangi kurallar izlenmelidir?

Önemli kurallar arasında, varsayılan değerlerin sabit ifadeler olduğundan emin olmak, isteğe bağlı parametreleri gerekli olanların sonuna yerleştirmek ve atlanan parametreleri belirtmek için adlandırılmış argümanları kullanmak yer alır.

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

IronPDF'de varsayılan parametreler, geliştiricilerin HTML içeriği veya dosya yolları gibi ayarları belirtmeden, PDF oluşturmayı kolaylaştırarak çıktıyı verimli bir şekilde özelleştirmelerine olanak tanır.

Adlandırılmış parametreler kod okunabilirliğini artırmada nasıl bir rol oynar?

Adlandırılmış parametreler, argümanların konumla değil isimle belirtilmesine olanak tanır, bu da kodun daha okunabilir olmasını sağlar ve argüman sırasına bağlı hataları azaltır.

Varsayılan parametreleri ustalaşmak neden geliştiriciler için kritik önemdedir?

Varsayılan parametrelere ustalaşmak, yöntem çağrılarında esneklik sağlayarak programlama verimliliğini artırdığı, gerekli verilerin temin edilmesini sağladığı ve kod yapısını basitleştirdiği için çok önemlidir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

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 ...

Daha Fazla Oku

Iron Destek Ekibi

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