Otomatik olarak uygulanan özellikler
Otomatik olarak uygulanan özellikler, özellik erişimcilerinde başka bir mantık gerekli olmadığında özellik bildirimini daha kısa hale getirir. Ayrıca istemci kodunun nesneleri oluşturmasını da sağlar. Aşağıdaki örnekte gösterildiği gibi bir özellik bildirdiğinizde, derleyici yalnızca özelliğin get
ve erişimcileri aracılığıyla erişilebilen özel, set
anonim bir yedekleme alanı oluşturur. init
erişimciler de otomatik olarak uygulanan özellikler olarak bildirilebilir.
Aşağıdaki örnekte, otomatik olarak uygulanan bazı özelliklere sahip basit bir sınıf gösterilmektedir:
// This class is mutable. Its data can be modified from
// outside the class.
public class Customer
{
// Auto-implemented properties for trivial get and set
public double TotalPurchases { get; set; }
public string Name { get; set; }
public int CustomerId { get; set; }
// Constructor
public Customer(double purchases, string name, int id)
{
TotalPurchases = purchases;
Name = name;
CustomerId = id;
}
// Methods
public string GetContactInfo() { return "ContactInfo"; }
public string GetTransactionHistory() { return "History"; }
// .. Additional methods, events, etc.
}
class Program
{
static void Main()
{
// Initialize a new object.
Customer cust1 = new Customer(4987.63, "Northwind", 90108);
// Modify a property.
cust1.TotalPurchases += 499.99;
}
}
Arabirimlerde otomatik olarak uygulanan özellikleri bildiremezsiniz. Otomatik olarak uygulanan ve alan destekli özellikler özel bir örnek yedekleme alanı bildirir ve arabirimler örnek alanlarını bildiremez. Bir gövde tanımlamadan bir arabirimde bir özellik bildirmek, erişimcilerle bir özellik bildirir. Bu arabirimi uygulayan her türün bu özelliği uygulaması gerekir.
Otomatik olarak uygulanan özellikleri alanlara benzer şekilde başlatabilirsiniz:
public string FirstName { get; set; } = "Jane";
Önceki örnekte gösterilen sınıf değiştirilebilir. İstemci kodu, oluşturulduktan sonra nesnelerdeki değerleri değiştirebilir. Önemli davranış (yöntemler) ve veriler içeren karmaşık sınıflarda genellikle genel özelliklere sahip olmak gerekir. Ancak, yalnızca bir değer kümesini (veri) kapsülleyen ve çok az davranış içeren veya hiç davranış içermeyen küçük sınıflar veya yapılar için, nesneleri sabit hale getirmek için aşağıdaki seçeneklerden birini kullanmalısınız:
- Yalnızca bir
get
erişimci bildirin (oluşturucu dışında her yerde sabittir). - Bir
get
aksesuar ve birinit
aksesuar (nesne yapımı dışında her yerde sabit) bildirin. - Erişimciyi
set
özel (tüketiciler için sabit) olarak bildirin.
Daha fazla bilgi için bkz . Otomatik olarak uygulanan özelliklere sahip basit bir sınıf uygulama.
Otomatik olarak uygulanan bir özelliğe doğrulama eklemeniz gerekebilir. C# 13, alan destekli özellikleri önizleme özelliği olarak ekler. Otomatik olarak uygulanan bir özelliğin derleyici sentezlenmiş yedekleme alanına erişmek için anahtar sözcüğünü kullanırsınız field
. Örneğin, önceki örnekteki özelliğin FirstName
veya boş dize olarak ayarlanamadığından null
emin olabilirsiniz:
public string FirstName
{
get;
set
{
field = (string.IsNullOrWhiteSpace(value) is false
? value
: throw new ArgumentException(nameof(value), "First name can't be whitespace or null"));
}
} = "Jane";
Bu özellik, yedekleme alanını açıkça bildirmenize gerek kalmadan erişimcilere mantık eklemenize olanak tanır. Derleyici tarafından oluşturulan yedekleme alanına erişmek için anahtar sözcüğünü kullanırsınız field
.
Önemli
Anahtar field
sözcük, C# 13'teki bir önizleme özelliğidir. Bağlamsal anahtar sözcüğü kullanmak için preview
proje dosyanızda .NET 9 kullanıyor field
olmanız ve öğenizi <LangVersion>
olarak ayarlamanız gerekir.
adlı field
bir alanı olan bir sınıfta anahtar sözcük özelliğini kullanırken field
dikkatli olmalısınız. Yeni field
anahtar sözcük, özellik erişimcisi kapsamında adlı field
bir alanın gölgesini oluşturur. Değişkenin adını değiştirebilir veya tanımlayıcıya olarak başvurmak field
için belirteci kullanabilirsiniz@
.@field
field
Anahtar sözcüğü için özellik belirtimini field
okuyarak daha fazla bilgi edinebilirsiniz.