Visual Basic, değiştirilemez değerleri ilan etmenin iki ana yolunu destekler - Const ve ReadOnly. Const, derleyici sabitleri için tasarlanmıştır, bu değerler derleme aşamasında bilinir. ReadOnly, yalnızca ilan sırasında veya yapıcıda başlatmaya izin verir ve çalışma sırasında değişmezliği destekler.
Tarihsel olarak, VB6 ve öncesinden bu tür bir anlam, sihirli sayılardan kaçınmayı ve bakımı kolaylaştırmayı sağlamıştır. VB.NET'te, okunan değerler için sınıf ve örnek alanları için ReadOnly getirerek olanaklar genişletilmiştir.
Runtime'da belirlenen veya dış verilere bağlı olan değerler için Const kullanılırsa hatalar oluşabilir. Karıştırılan görünürlük alanları da hatalara yol açar.
Derleme aşamasında bilinen (sayılar, dizeler) basit değişmez değerler için Const kullanın, ancak değerin yapıcıda hesaplanabileceği durumlar için yalnızca okunabilir olarak ReadOnly kullanın.
Kod örneği:
Public Class MathConstants Public Const Pi As Double = 3.1415926535 Public ReadOnly Property UtcCreated As DateTime Public Sub New() UtcCreated = DateTime.UtcNow End Sub End Class
Anahtar özellikler:
Runtime'da elde edilen bir değer için Const ilan edilebilir mi (örneğin, bir dosyadan)?
Hayır - Const, derleme aşamasında bir değer gerektirir. Runtime başlatması için ReadOnly kullanılmalıdır.
ReadOnly alanı yapıcıdan sonra değiştirilebilir mi?
Hayır - değişiklik yalnızca başlatma anında mümkündür (ya ilan ederken ya da yapıcıda), sonrasında yalnızca okumak için erişilebilir.
Matematiksel hesaplamalarda float/double sayılar için Const kullanılmalı mıdır?
Evet, eğer değer önceden biliniyorsa. Ancak diğer derlemelerde kullanıldığında, Const'ın değerini değiştirmek, tüm bağımlı modüllerin yeniden derlenmesini gerektirecektir, çünkü derleyici değeri doğrudan yerleştirir.
Geliştirici, daha sonra farklı ortamlarda (geliştirme/prod) değiştirilecek bir klasör yolu için Const ilan etti. Sonuç olarak, klasör değiştiğinde, bu Const'ı kullanan tüm projelerin yeniden derlenmesi gerekiyordu.
Artılar:
Eksiler:
Yollar için ReadOnly uygulandı, yapıcıda ortam yapılandırması dikkate alınarak başlatıldı. Değerler, tüm uygulamanın yeniden derlenmesi olmadan ayarlar aracılığıyla kolayca değiştirilebilir.
Artılar:
Eksiler: