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

C# Getter Setter (Geliştiriciler İçin Nasıl Çalışır)

Getter ve setter'lar, C# gibi nesne yönelimli programlama dillerinde temel kavramlardır. Bu iki metod, sınıf özelliklerinin erişimini ve değiştirilebilmesini kontrol etmemize olanak tanır. Bu eğitimde, C# getter'larını ve private setter'larını içeren yeni başlangıç ve orta seviye ile ilgili kod blokları üzerinden keşfedeceğiz.

Getter ve Setter'lara Giriş

Getter ve Setter Nedir?

Temelde, getter ve setter'lar bir sınıftaki özel değişkenlere erişim izni veren metotlardır. Getter, özel bir alan değişkeninin değerini döndürürken, setter bunu değiştirir. Bu metotlar, bir sınıfın dahili verisinin (alanlar) güvenli ve doğru bir şekilde erişilmesini veya değiştirilmesini sağlar.

Neden ihtiyacımız var?

Bir public class Car ve bir private string description özelliğine sahip olmayı hayal edin. Bu sınıf dışındaki birisi açıklamayı öğrenmek isterse, doğrudan erişemez çünkü bu özeldir. Burada getter ve setter'ların rolü başlar.

Bir getter, kullanıcıların bir private string description değerini doğrudan erişip değiştirmelerine izin vermeden almasına olanak tanır. Öte yandan, setter, kullanıcılara belirlediğimiz koşullarda açıklamayı değiştirmelerine olanak tanır.

Erişim Belirleyicileri

Erişim belirteçleri, bir alanın veya özelliğin sınıf dışından görülebilirliğini ve erişilebilirliğini tanımlar. En yaygın kullanılan değiştiriciler public ve private'dir.

  • Public: public olarak ilan edilen alanlar veya özellikler programınızın herhangi bir yerinden erişilebilir. Örneğin, kodunuzun herhangi bir kısmı tarafından erişilebilen ve değiştirilebilen bir public int Age özelliğine sahip olabilirsiniz.
  • Private: private olarak ilan edilen özellikler veya alanlar yalnızca tanımlı sınıf içinde erişilebilir, örneğin private int age. Bu kapsülleme, yetkisiz değişiklikleri önlemeye yardımcı olur ve sınıfın iç durumunun düzgün bir şekilde korunmasını sağlar.

Basit Getter ve Setter

Basit bir örnekle başlayalım.

using System;

public class Person
{
    private string name;  // This is a private string name property variable

    // This is the getter
    public string GetName()
    {
        return name;
    }

    // This is the setter
    public void SetName(string newName)
    {
        name = newName;
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
using System;

public class Person
{
    private string name;  // This is a private string name property variable

    // This is the getter
    public string GetName()
    {
        return name;
    }

    // This is the setter
    public void SetName(string newName)
    {
        name = newName;
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
Imports System

Public Class Person
	Private name As String ' This is a private string name property variable

	' This is the getter
	Public Function GetName() As String
		Return name
	End Function

	' This is the setter
	Public Sub SetName(ByVal newName As String)
		name = newName
	End Sub
End Class

Friend Class Program
	Shared Sub Main()
		Dim person As New Person()
		person.SetName("John")
		Console.WriteLine(person.GetName())
	End Sub
End Class
$vbLabelText   $csharpLabel

Yukarıdaki class Person içerisinde, name özelliği için hem bir getter (GetName) hem de bir setter (SetName) bulunur. static void Main metodunu çalıştırdığınızda, setter kullanarak isim için o değeri ayarladığımız için "John" yazdıracaktır.

Otomatik Olarak Uygulanan Özellikler

Şimdi, "Getter'lar ve setter'lar için her zaman ayrı metotlar mı yazmalıyım?" diye düşünebilirsiniz. Cevap, "hayır." C# bu işlemi kolaylaştırmak için "otomatik olarak uygulanan özellikler" veya "otomatik özellikler" adı verilen bir kavram tanıttı.

C#'ta, otomatik özellikler kullanarak bir private field ve ilişkili özelliğini ilan etmek için kısa bir yol sağlayabilirsiniz. İşte bir örnek:

using System;

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property
    public string Title { get; set; } // Another auto-implemented property
}

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
using System;

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property
    public string Title { get; set; } // Another auto-implemented property
}

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
Imports System

Public Class Student
	Public Property Name() As String ' -  This is an auto-implemented or automatic property
	Public Property Title() As String ' -  Another auto-implemented property
End Class

Friend Class Program
	Shared Sub Main()
		Dim student As New Student()
		student.Name = "Alice" ' Using setter
		Console.WriteLine(student.Name) ' Using getter
	End Sub
End Class
$vbLabelText   $csharpLabel

Student sınıfında, Name özelliği hem bir getter hem de bir setter'dır, ki bunlar otomatik olarak uygulanmaktadır. C# derleyicisi sahne arkasında bir private string name alanı oluşturur ve Name özelliği bu alana erişim sağlar.

Özelliklerde Gelişmiş Erişim Belirteçleri

Sadece Okunabilir Özellikler

Bazen, dışarıdan değiştirilemeyen ancak okunabilen bir özellik sağlamak isteyebilirsiniz. Bu durumlarda sadece okunabilir özellikler çok faydalıdır. Özelliği sadece okunabilir yapmak için setter'ı atlayabilirsiniz.

Diyelim ki Person sınıfımıza salt okunur bir string Description özelliği eklemek istiyoruz:

public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
Public Class Person
	Public Property Name() As String
	Public ReadOnly Property Description() As String

	Public Sub New(ByVal name As String, ByVal description As String)
		Me.Name = name
		Me.Description = description
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnekte, Description özelliği yalnızca Person sınıfının yapıcısı içinde ayarlanabilir. Bir kez ayarlandığında, dışarıdan değiştirilemez.

Özel Setter'lar

Bazen, özelliğin sınıf dışından okunmasına izin verip sadece sınıf içinden ayarlanmasına izin vermek isteyebilirsiniz. Bu bir private set kullanılarak gerçekleştirilir.

using System;

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}
using System;

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  // Allowed
        // myProgram.Description = "New Description";  // Not allowed
    }
}
Imports System

Public Class Program
	Private privateDescription As String
	Public Property Description() As String
		Get
			Return privateDescription
		End Get
		Private Set(ByVal value As String)
			privateDescription = value
		End Set
	End Property

	Public Sub New()
		Description = "This is a program about getters and setters."
	End Sub
End Class

Friend Class ProgramTest
	Shared Sub Main()
		Dim myProgram As New Program()
		Console.WriteLine(myProgram.Description) ' Allowed
		' myProgram.Description = "New Description";  // Not allowed
	End Sub
End Class
$vbLabelText   $csharpLabel

class Program içerisinde, Description özelliği bir private set'a sahiptir, bu da sınıf dışından değiştirilemeyeceği anlamına gelir; böylece verinin bütünlüğü sağlanır.

Kalıtım ve Geçersiz Kılma

Türev sınıflarla çalışırken, getter ve setter metodlarını davranışlarını özelleştirmek için geçersiz kılabilirsiniz. Bu, değer alırken veya ayarlarken ekstra mantık eklemenizi sağlar.

public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
Public Class Person
	Public Overridable Property Name() As String
End Class

Public Class Student
	Inherits Person

	Private studentID As String

	Public Overrides Property Name() As String
		Get
			Return MyBase.Name
		End Get
		Set(ByVal value As String)
			If Not String.IsNullOrEmpty(value) Then
				MyBase.Name = value
			End If
		End Set
	End Property
End Class
$vbLabelText   $csharpLabel

Bu örnekte, Student sınıfı Person sınıfından kalıtım alır ve Name özelliğinin setter'ını geçersiz kılar. İsim boş veya null olmadığından emin olmak için ayarlama işlemi öncesinde bir doğrulama kontrolü ekler.

C# Geliştiriminizi Geliştirmek için Iron Suite Tanıtımı

Iron Suite, C# geliştirme yeteneklerini önemli ölçüde artıran bir araştırma araçları koleksiyonudur. IronPDF, IronXL, IronOCR ve IronBarcode'u içerir. Bu araçların her biri, C#'ın çeşitli alanlarına entegre edilebilecek benzersiz bir amaca hizmet eder.

IronPDF - Güçlü Bir PDF Yönetim Aracı

IronPDF hakkında daha fazlasını öğrenin geliştirme için oluşturma, okuma ve PDF belgelerini düzenlemeye olanak sağlayan bir kütüphanedir. HTML'yi PDF'ye dönüştürme veya getter ve setter'lar aracılığıyla PDF meta verilerini yönetme olsun, IronPDF bu konularda size yardımcı olur.

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");
    }
}
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 - Excel Manipülasyonu Kolaylaştırıldı

Excel dosyalarıyla çalışırken, IronXL Excel Kütüphanesi okuma ve yazma sürecini basitleştirir. Bu araç, C#'ta getter ve setter'lar için aynı sözdizimini kullanarak, Excel dosyalarının özel ve genel dizelerini veya tamsayılarını işlemek için kullanılabilir.

IronOCR - Optical Character Recognition in C

IronOCR'u Keşfedin, görüntüleri aranabilir metne çeviren bir Optik Karakter Tanıma kütüphanesidir. Uygulamanız taranmış belgelerden metin okumayı içeriyorsa, IronOCR'un güçlü yetenekleri kolayca entegre edilebilir. Önceki örnek kurulumu itibarıyla sınıf Person veya sınıf Student'ta beklendiği gibi özel alanları ve genel dize açıklamalarını işleyebilir.

IronBarcode - Barkod Okuma ve Yazma Kütüphanesi

IronBarcode özelliklerini keşfedin barkod okuma ve yazma gerektiren uygulamalar için. C# programlamasında kullanılan getter ve setter'lar gibi, barkod verilerine doğrudan erişim ve otomatik özellikler aracılığıyla özelleştirme sağlar.

Iron Suite ve Getter'lar ve Setter'lar

Iron Suite paketi, C# geliştirmesiyle birlikte, getter ve setter'lar dahil sorunsuz bir şekilde entegre olur. Bu araçlar her C# projesine değer katar.

Sonuç

Özetlemek gerekirse:

  1. Getter and Setter: Bir sınıfın özel alanlarına erişimi ve değiştirilmesini sağlarlar.
  2. Auto Properties: Otomatik olarak uygulanmış özelliklerin yardımıyla otomatik getter ve setter'lara sahip olmanın zarif bir yolu.
  3. Access Modifiers: Özelliklerin erişilebilirliğini ince ayarlamalarına yardımcı olur.

Artık C#'ta getter ve setter'ları nasıl kullanacağınız konusunda sağlam bir anlayışa sahip olmalısınız.

Iron Suite'in araç takımı C# geliştiricileri için inanılmaz işlevsellik sunar. Bu ürünlerin her biri, IronPDF, IronXL, IronOCR ve IronBarcode dahil, bir Ücretsiz Iron Software araçları denemesi ile gelir, bu sayede bu güçlü kütüphaneleri projelerinizde keşfetme ve entegre etme imkanı sunar.

Kendinizi adamaya hazır olduğunuzda, bireysel lisanslar $999'den başlar. Bu araçlardan birden fazlasının ihtiyaçlarınıza uyduğunu düşünüyorsanız, yalnızca iki bireysel lisansın fiyatına tam Iron Suite paketini satın alma fırsatından yararlanabilirsiniz.

Sıkça Sorulan Sorular

C#'de getter ve setter'ların amacı nedir?

C#'de getter ve setter'lar, bir sınıfın özel (private) özelliklerine erişimi kontrol etmek için kullanılır. Getter'lar bir özelliğin değerini alırken, setter'lar bir özelliğin değiştirilmesine izin verir. Bu kapsülleme, sınıfın verilerine güvenli ve kontrollü erişim sağlar.

C#'de erişim belirleyicilerinin özellik görünürlüğünü nasıl etkilediği?

public ve private gibi erişim belirleyicileri, C#'de bir sınıfın özelliklerinin görünürlüğünü ve erişilebilirliğini belirler. Public özellikler her yerden erişilebilirken, private özellikler tanımlandıkları sınıfla sınırlandırılmıştır.

C#'de otomatik uygulanmış özellikler nedir?

Otomatik uygulanmış özellikler, C#'de özellikleri kısa yoldan tanımlamanın bir yolunu sağlar. Ayrı bir alan, getter ve setter yazmadan bir özelliği tanımlamanıza imkan tanır. Derleyici, sizin için bir arka plan alanı otomatik olarak oluşturur.

C#'de yalnızca okuma özelliği nasıl oluşturulur?

C#'de bir özelliği yalnızca okuma yapabilirsiniz, bunun için özellik tanımında setter'ı atlayarak. Bu, özelliğin yalnızca sınıf içinde, örneğin bir yapıcıda ayarlanabileceği ve dışarıdan değiştirilemeyeceği anlamına gelir.

C#'de özel setter'ları nasıl kullanırsınız?

C#'de özel setter'lar, özelliğin sadece tanımlandığı sınıf içinde değiştirilmesine izin verirken, dış kodun özelliği okumasına izin verir. Bu, verinin bütünlüğünü korumanın yanı sıra kontrollü erişim sağlamak için kullanışlıdır.

C#'de türetilmiş sınıflarda özellik davranışını geçersiz kılabilir misiniz?

Evet, C#'de türetilmiş sınıflarda özellik davranışını, temel sınıfta özelliği virtual olarak işaretleyerek ve türetilmiş sınıfta override anahtar kelimesini kullanarak geçersiz kılabilirsiniz. Bu, getter ve setter davranışlarının özelleştirilmesini sağlar.

C#'ta HTML'yi PDF'ye nasıl dönüştürebilirsiniz?

HTML dizgilerini PDF'lere dönüştürmek için IronPDF'ün RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca, HTML dosyalarını RenderHtmlFileAsPdf kullanarak PDF'lere dönüştürebilirsiniz.

PDF ve barkod fonksiyonlarıyla C# geliştirmesi için hangi araçlar mevcuttur?

Iron Suite, C# projeleriyle sorunsuz bir şekilde entegre olan IronPDF ve IronBarcode gibi araçlar sunar ve PDF yönetimi ile barkod okuma/yazma gibi fonksiyonlar sağlar.

Iron Suite, C# geliştiricileri için neden faydalıdır?

Iron Suite, C# projeleriyle sorunsuz bir şekilde entegre olan güçlü araçlar yelpazesi sunduğu için C# geliştiricileri için faydalıdır. Bu araçlar, PDF yönetimi, Excel işleme, OCR yetenekleri ve barkod okuma/yazma gibi ileri düzey fonksiyonlar sağlar.

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