C # için genel rehberlik, bir özelliği her zaman ortak bir alan üzerinde kullanmaktır. Bu mantıklıdır - bir alanı açığa çıkararak çok fazla uygulama ayrıntısı ortaya çıkarırsınız. Bir özellik ile, kodu tüketmekten gizlenmesi için bu ayrıntıyı kapsüllersiniz ve uygulama değişiklikleri arayüz değişikliklerinden ayrılır.
Ancak, bazen bu kuralla ilgili olarak geçerli bir istisna olup olmadığını merak ediyorum readonly
anahtar kelimeyle . Bu anahtar kelimeyi herkese açık bir alana uygulayarak, ekstra bir garanti vermiş olursunuz: değişmezlik. Bu sadece bir uygulama detayı değildir, değişmezlik bir tüketicinin ilgi duyabileceği bir şeydir. Bir readonly
alanın kullanılması onu kamu sözleşmesinin bir parçası haline getirir ve ayrıca ortak arayüzde değişiklik yapmak zorunda kalmadan gelecekteki değişiklikler veya miras tarafından kırılamayan bir şeydir. Bu bir mülkün sunamayacağı bir şey.
Bu nedenle, değişmezliği garanti etmek, readonly
, bazı durumlarda bir mülk üzerinde bir alan midir?
(Açıklığa kavuşturmak için, kesinlikle bu seçimi her zaman yapmanız gerektiğini söylemiyorum, çünkü alan şu anda değişmez olur, sadece sınıfın tasarımının bir parçası olarak mantıklı olduğunda ve sözleşmesindeki değişmezliği dahil etmek için kullanılması amaçlanır. Çoğunlukla, üyenin bir üzerinde olması gerektiğinde interface
veya tembel yükleme yapmak istediğinizde olduğu gibi, belirli durumlarda değil, bunun haklı olup olmayacağına odaklanan cevaplarla ilgileniyorum .)