Yedek Alanlı Tam Özellikler
Get ve set erişimcilerine mantık ekleyin.
Yedek Alanlı Tam Özellikler, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Otomatik Özelliklerin Ötesi
get veya set içinde mantığa ihtiyaç duyduğunuzda, açıkça tanımlanmış bir destek alanına sahip tam özellik yazarsınız. Alan verileri saklar, erişimciler ise erişimi denetler.
using System;
class Temperature
{
private double _celsius;
public double Celsius
{
get { return _celsius; }
set { _celsius = value; }
}
}
class Program
{
static void Main()
{
var t = new Temperature();
t.Celsius = 21.5;
Console.WriteLine(t.Celsius);
}
}Destek Alanı Kuralı
Kurala göre destek alanı private olur ve _name örneğinde olduğu gibi başına alt çizgi getirilerek adlandırılır. Herkese açık özellik bu alanı kullanıma sunar.
using System;
class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
class Program
{
static void Main()
{
var p = new Person();
p.Name = "Grace";
Console.WriteLine(p.Name);
}
}Değer Anahtar Sözcüğü
Bir set erişimcisinin içinde, örtük value parametresi atanan yeni değeri tutar. Bu değerle ne yapılacağına siz karar verirsiniz.
using System;
class Box
{
private int _size;
public int Size
{
get { return _size; }
set { _size = value * 2; }
}
}
class Program
{
static void Main()
{
var box = new Box();
box.Size = 10;
Console.WriteLine("Stored size: " + box.Size);
}
}Ayarlayıcıda Doğrulama
Tam özelliklerin yaygın bir kullanım alanı, girdiyi saklamadan önce doğrulamaktır; değer geçersizse istisna fırlatılır.
using System;
class Account
{
private decimal _balance;
public decimal Balance
{
get { return _balance; }
set
{
if (value < 0)
throw new ArgumentException("Balance cannot be negative");
_balance = value;
}
}
}
class Program
{
static void Main()
{
var a = new Account();
a.Balance = 500m;
Console.WriteLine("Balance: " + a.Balance);
}
}Hesaplanan (Salt Okunur) Özellikler
Yalnızca get erişimcisi olan bir özellik, değerini diğer alanlardan hesaplayabilir. Hiçbir şey saklanmadığı için destek alanı yoktur.
using System;
class Rectangle
{
private double _width;
private double _height;
public Rectangle(double w, double h)
{
_width = w;
_height = h;
}
public double Area
{
get { return _width * _height; }
}
}
class Program
{
static void Main()
{
var r = new Rectangle(4, 5);
Console.WriteLine("Area: " + r.Area);
}
}Ayarlayıcılardaki Yan Etkiler
Bir ayarlayıcı yalnızca veri saklamakla kalmayabilir: girdiyi normalleştirebilir, ilişkili durumu güncelleyebilir veya değişiklikleri günlüğe kaydedebilir.
using System;
class User
{
private string _email;
public string Email
{
get { return _email; }
set { _email = value.Trim().ToLower(); }
}
}
class Program
{
static void Main()
{
var u = new User();
u.Email = " Hello@Example.COM ";
Console.WriteLine("Normalized: " + u.Email);
}
}Alıcıda Tembel Hesaplama
Bir alıcı, hesaplanması maliyetli bir sonucu ilk istendiğinde destek alanında önbelleğe alabilir.
using System;
class Report
{
private string _cached;
public string Content
{
get
{
if (_cached == null)
_cached = "Generated at runtime";
return _cached;
}
}
}
class Program
{
static void Main()
{
var r = new Report();
Console.WriteLine(r.Content);
Console.WriteLine(r.Content);
}
}Geçersiz Duruma Karşı Koruma
Bir nesneyi her zaman geçerli tutmak için destek alanını mantıkla birleştirin. Burada ayarlayıcı, değeri belirli bir aralıkla sınırlar.
using System;
class Volume
{
private int _level;
public int Level
{
get { return _level; }
set
{
if (value < 0) _level = 0;
else if (value > 100) _level = 100;
else _level = value;
}
}
}
class Program
{
static void Main()
{
var v = new Volume();
v.Level = 150;
Console.WriteLine("Clamped: " + v.Level);
}
}Saklanan ve Hesaplanan Değerleri Birleştirme
Bir sınıf genellikle saklanan özelliklerle (destek alanlarına sahip) bunlardan türetilen hesaplanan salt okunur özellikleri birlikte kullanır.
using System;
class Employee
{
private string _first;
private string _last;
public string First { get { return _first; } set { _first = value; } }
public string Last { get { return _last; } set { _last = value; } }
public string FullName { get { return _first + " " + _last; } }
}
class Program
{
static void Main()
{
var e = new Employee { First = "Marie", Last = "Curie" };
Console.WriteLine(e.FullName);
}
}Değişiklik Bildirimleri Gönderme
Ayarlayıcılar, veriler değiştiğinde bildirim göndermek için doğal bir yerdir; bu kalıp kullanıcı arayüzü çatılarında yoğun biçimde kullanılır.
using System;
class Model
{
private int _count;
public int Count
{
get { return _count; }
set
{
if (_count != value)
{
_count = value;
Console.WriteLine("Count changed to " + _count);
}
}
}
}
class Program
{
static void Main()
{
var m = new Model();
m.Count = 1;
m.Count = 1;
m.Count = 2;
}
}Hepsini Birleştirme
Tam özellikler, temiz ve alan benzeri bir arayüzün arkasında bir sınıfın değişmez koşullarını uygulamasını ve türetilmiş verileri kullanıma sunmasını sağlar.
using System;
class Thermostat
{
private double _target;
public double Target
{
get { return _target; }
set { _target = value < 10 ? 10 : value; }
}
public string Status { get { return _target >= 22 ? "Warm" : "Cool"; } }
}
class Program
{
static void Main()
{
var th = new Thermostat();
th.Target = 5;
Console.WriteLine(th.Target + " -> " + th.Status);
th.Target = 24;
Console.WriteLine(th.Target + " -> " + th.Status);
}
}Kısa Sınama
Tam özellikler konusundaki anlayışınızı sınayın.
Özet
Tam özellik, doğrulama, normalleştirme, önbelleğe alma veya değişiklik bildirimleri ekleyebilmeniz için özel bir destek alanını açıkça tanımlanmış get/set erişimcileriyle birleştirir. Salt okunur hesaplanan özelliklerde yalnızca alıcı bulunur ve destek alanı yoktur. value anahtar sözcüğü, bir ayarlayıcıya atanan yeni değeri taşır.
using System;
class Demo
{
private int _n;
public int N
{
get { return _n; }
set { _n = value < 0 ? 0 : value; }
}
public int Doubled { get { return _n * 2; } }
}
class Program
{
static void Main()
{
var d = new Demo();
d.N = -5;
Console.WriteLine(d.N + ", " + d.Doubled);
}
}Sıkça Sorulan Sorular
“Yedek Alanlı Tam Özellikler” dersi ücretsiz mi?
Evet — “Yedek Alanlı Tam Özellikler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Yedek Alanlı Tam Özellikler” dersinde ne öğreneceğim?
Get ve set erişimcilerine mantık ekleyin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Yedek Alanlı Tam Özellikler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Otomatik Uygulanan Özellikler
- Yedek Alanlı Tam Özellikler
- İfade Gövdeli Üyeler
- Dizinleyiciler