ReadOnly
VB'de ne olduğunu bilmiyorum. Ben alabilirsiniz en açık aslında daha az ayrıntılı olduğunu tahmin: C# '
public int Id { get; private set; }
, readonly
bir alanın değeri nesnenin oluşturulması sırasında ayarlanmış olduğunu belirtir ve yapıcı çıkar sonra değiştirilemez.
private readonly int _id; // note field marked as 'readonly'
public int Id
{
get { return _id; }
}
Maalesef otomatik özelliklere (Ben ilk kod parçacığı göstermek gibi) readonly
izin verilmez: Sen aracılığıyla kazanmasını sağlayabilecek. Diğer bir deyişle, sınıfınızın kodunun hiçbirinin kurucudan çıktıktan sonra özel diziyi çağırmamasını sağlayarak salt okunur semantiği kendiniz uygulamanız gerekir. Bu, VB'nin ReadOnly
kullanımından bahsettiğinize göre farklıdır.
EDIT Thomas'ın işaret ettiği gibi, hiçbir alıcıya sahip olmak özel bir kişiden farklıdır. Ancak VB's usage of ReadOnly
özellikleri ile kullanıldığında en azından zaman, C# birine farklıdır:
' Only code inside class employee can change the value of hireDateValue.
Private hireDateValue As Date
' Any code that can access class employee can read property dateHired.
Public ReadOnly Property dateHired() As Date
Get
Return hireDateValue
End Get
End Property
C# programcı için, ReadOnly
kelime gereksiz görünüyor. Hiç bir belirleyicinin mevcut olmadığı gerçeği zaten ima edilmiştir.
Bildiğim kadarıyla alanları ile ilgili olarak, C# ve VB eşdeğer görünmektedir.
Daha ayrıntılı olabilmek için ?! Bu ne için ... – Tahbaza
"Daha fazla ayrıntı" derken ne diyorsunuz? Kod örneğinizle, atamayı denediyseniz, VB.NET'te yaptığınız gibi aynı derleyici hatasını alırsınız. Intellisense, bunu yalnızca bir gettable öğesi olarak tanımlamalıdır. –
@Jonathan: Daha okunaklı bir özellik olduğu sonucuna varmaktan ziyade, okuyucu için daha açık bir orandır. Pasörlük yokluğu kendini temize özellik salt okunur olduğunu yapar –