Sadece Okunur/Yazılır Özellikler
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 11 / 70.
Bazen yalnızca okunabilen veya yalnızca yazılabilen özelliklere ihtiyaç duyarsınız. Bunu, ayrı ayrı erişimciler üzerinde private kullanarak kontrol edebilirsiniz.
Salt okunur bir özellik, herkese açık bir alıcıya ancak özel bir ayarlayıcıya (veya hiç ayarlayıcıya) sahiptir:
public class User
{
public string Username { get; private set; }
public User(string username)
{
Username = username;
}
}Harici kod Username değerini okuyabilir, ancak onu yalnızca sınıfın kendisi değiştirebilir. Bu, oluşturma sırasında bir kez ayarlanması gereken değerler için kullanışlıdır.
Yalnızca yazma amaçlı bir özellik herkese açık bir ayarlayıcıya ancak özel bir alıcıya sahiptir:
public class Account
{
public string Password { private get; set; }
public bool ValidatePassword(string input)
{
return input == Password;
}
}Salt yazılabilir özellikler nadirdir, ancak depolanan değeri açığa çıkarmadan girişi kabul etmek istediğiniz parolalar gibi hassas veriler için kullanışlıdır.
Yalnızca bir getter ile gerçekten salt okunur özellikler de oluşturabilirsiniz:
public class Circle
{
public double Radius { get; }
public double Area => Math.PI * Radius * Radius;
public Circle(double radius)
{
Radius = radius;
}
}Yalnızca get; içeren özelliklere sadece oluşturucuda veya bildirim sırasında değer atanabilir; bu da nesne oluşturulduktan sonra onları değişmez kılar.
Görev
KolayHassas verileri korumak için salt okunur ve salt yazılır özelliklerin ne zaman kullanılacağını gösteren güvenli bir yapılandırma sistemi oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
Config.cs: Sunucu yapılandırmasını yönetenServerConfigsınıfınıSettingsad alanında tanımlayın. Şunlara sahip olmalıdır:- Salt okunur bir
ServerNameözelliği (yalnızca oluşturucuda ayarlanabilir) - Özel ayarlayıcıya sahip salt okunur bir
Portözelliği (oluşturucu aracılığıyla ayarlanır) - Gizli bir anahtarı dahili olarak depolayan salt yazılır bir
ApiKeyözelliği - Sağlanan anahtarın depolanan anahtarla eşleşmesi durumunda
ValidateApiKey(string key)döndüren birtrueyöntemi - Sunucu adını ve bağlantı noktasını kabul eden bir oluşturucu
- Salt okunur bir
Program.cs: Ana dosyanızda, giriş değerlerini kullanarak birServerConfignesnesi oluşturun, API anahtarını ayarlayın, ardından bir test anahtarına karşı doğrulayın.
Dört giriş alacaksınız:
- Sunucu adı
- Bağlantı noktası numarası
- Depolanacak API anahtarı
- Doğrulanacak API anahtarı
Sunucu ayrıntılarını ve doğrulama sonucunu şu biçimde yazdırın:
Server: {ServerName}, Port: {Port}
API Key Valid: {True/False}Örneğin, girişler MainServer, 8080, secret123 ve secret123 ise çıktı şu şekilde olmalıdır:
Server: MainServer, Port: 8080
API Key Valid: TrueKendin dene
using System;
using Settings;
class Program
{
public static void Main(string[] args)
{
// Girdileri oku
string serverName = Console.ReadLine();
int port = Convert.ToInt32(Console.ReadLine());
string apiKeyToStore = Console.ReadLine();
string apiKeyToValidate = Console.ReadLine();
// TODO: serverName ve port ile bir ServerConfig nesnesi oluştur
// TODO: Salt yazılır özelliği kullanarak API anahtarını ayarla
// TODO: API anahtarını doğrula ve sonuçları yazdır
// Biçim: Server: {ServerName}, Port: {Port}
// API Key Valid: {True/False}
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci KayıtlarıKendi başına pratik yap: Online C# derleyicisi