Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Hassas 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öneten ServerConfig sınıfını Settings ad 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 bir true yöntemi
    • Sunucu adını ve bağlantı noktasını kabul eden bir oluşturucu
  • Program.cs: Ana dosyanızda, giriş değerlerini kullanarak bir ServerConfig nesnesi 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: True

Kendin 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}
    }
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online C# derleyicisi