Muhammed Medeni Baykal

C#, Visual Basic, Javascipt ve jQuery ilgili yazılarımı, makalelerimi; ara sıra romantikleştiğimde edebîmsi yazılar yazdığım blog şeysi.

Otomatik Uygulanmış Özellikler

, , , | Visual Basic 2010 | 16.02.2010

Bizim dünyamızda bir sınıf içerisindeki değişkenlere sınıfın dışından ulaşılmasına izin vermek caiz değildir. Tamımladığımız bir değişken Private olmalıdır. Eğer değişkene sınıf dışında da ulaşılması gerekiyorsa bu değişken için bir özellik yazardık ve değişkene özellik üzerinden ulaşırdık. Bu durum, yazdığımız sınıflarda inanılmaz derecede kod kalabalığı oluştururdu. C# bunu önceki sürümlerinde Otomatik Uygulanmış Özellikler sayesinde çözmüştü.

Visual Basic de yeni sürümünde bu probleme Otomatik Uygulanmış Özellikler sayesinde çözüm getirdi. Önceki sürümlerde,

Private m_Adı As String
Public Property Adı() As String
    Get
        Return m_Adı
    End Get
    Set(ByVal value As String)
        m_Adı = value
    End Set
End Property

şeklinde tanımlanan bir özelliği artık tek satırda tanımlamamız mümkün:

Public Property Adı() As String

Yukarıda ki gibi bir özellik için derleyici otomatik olarak Get, Set bloklarını, özelliğin değerini saklayacağı Private değişkeni oluşturuyor ve kodunu bizim için yazıyor.

İlk Değer Atama

İlk değer ataması yaparken,

Public Property Adı() As String = "Muhammed Medeni Baykal"

şeklinde; ya da

Public Property Dersler As String() = {
        "Devreler Kuramı I",
        "Sinyaller ve Sistemler I",
        "Elektromanyetik Alan Teorisi"
    }

şeklinde atamalar yapılabilir.

İlk değer atamada, özellik türü Generic bir tür ise değer atarken o türün bir kopyası oluşturulmalıdır. Örneğin, 

Public Property Dersler As List(Of String)

şeklinde bir özelliğe ilk değer atarken,

Public Property Dersler As List(Of String) = New List(Of String) From {
       "Devreler Kuramı I",
       "Sinyaller ve Sistemler I",
       "Elektromanyetik Alan Teorisi"
   }

yukarıdaki gibi atamalıyız.

Visual Basic 10’un yenilikleri ile ilgili yazılarım devam edecek. Bir sonraki yazımda, Extension Method’lardan ve Collection Initializer’lerden bahsedeceğim.