Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Nesne değişkenlerini bildirmek için normal bir bildirim deyimi kullanırsınız. Veri türü için ya Object (yani, Nesne Veri Türü) ya da nesnenin oluşturulacağı daha özel bir sınıf belirtirsiniz.
Bir değişkeni Object olarak bildirmek, System.Object olarak bildirmekle aynıdır.
Belirli bir nesne sınıfına sahip bir değişken bildirdiğinizde, bu sınıf tarafından sunulan tüm yöntemlere ve özelliklere ve devraldığı sınıflara erişebilir.
Object ile değişkeni bildirirseniz, Object'yi geç bağlamaya izin verecek şekilde ayarlamadığınız sürece yalnızca Option Strict Off sınıfının üyelerine erişebilir.
Bildirim Söz Dizimi
Nesne değişkenini bildirmek için aşağıdaki söz dizimini kullanın:
Dim variablename As [New] { objectclass | Object }
Bildirimde Genel, Korumalı, Arkadaş, , Protected FriendÖzel, Paylaşılan veya Statik de belirtebilirsiniz. Aşağıdaki örnek bildirimler geçerlidir:
Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem
Geç Bağlama ve Erken Bağlama
Bazen kodunuz çalıştırana kadar belirli bir sınıf bilinmez. Bu durumda, nesne değişkenini veri türüyle Object bildirmeniz gerekir. Bu, herhangi bir nesne türüne genel bir referans oluşturur ve belirli sınıf çalışma zamanı esnasında atanır. Buna geç bağlama denir. Geç bağlama ek yürütme süresi gerektirir. Ayrıca kodunuzu en son atadığınız sınıfın yöntemleri ve özellikleriyle sınırlar. Kodunuz farklı bir sınıfın üyelerine erişmeye çalışırsa bu durum çalışma zamanı hatalarına neden olabilir.
Derleme zamanında belirli bir sınıfı bildiğinizde, nesne değişkenini bu sınıftan olacak şekilde bildirmeniz gerekir. Buna erken bağlama denir. Erken bağlama performansı artırır ve kodunuzun belirli sınıfın tüm yöntemlerine ve özelliklerine erişimini garanti eder. Yukarıdaki örnek bildirimlerde, değişken objA yalnızca sınıfının System.Windows.Forms.Labelnesnelerini kullanıyorsa, bildiriminde belirtmelisiniz As System.Windows.Forms.Label .
Erken Bağlamanın Avantajları
Nesne değişkenlerini belirli bir sınıf olarak bildirmek size birkaç avantaj sağlar:
Otomatik tür denetimi
Belirli sınıfın tüm üyelerine garantili erişim
Kod Düzenleyicisi'nde Microsoft IntelliSense desteği
Kodunuzun okunabilirliği iyileştirildi
Kodunuzda daha az hata var
Çalışma zamanı yerine derleme zamanında yakalanan hatalar
Daha hızlı kod yürütme
Nesne Değişkeni Üyelerine Erişim
dönüştürüldüyse Option StrictOn, nesne değişkeni yalnızca onu bildirdiğiniz sınıfın yöntemlerine ve özelliklerine erişebilir. Aşağıdaki örnekte bu gösterilmektedir.
' Option statements must precede all other source file lines.
Option Strict On
' Imports statement must precede all declarations in the source file.
Imports System.Windows.Forms
Public Sub accessMembers()
Dim p As Object
Dim q As System.Windows.Forms.Label
p = New System.Windows.Forms.Label
q = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler ERROR.
j = p.Left
' The following statement retrieves the left edge of the label in pixels.
k = q.Left
End Sub
Bu örnekte, p, Object özelliğini içermeyen Left sınıfının yalnızca üyelerini kullanabilir. Öte yandan, q türünde Label olarak bildirildi, bu nedenle Label ad alanındaki System.Windows.Forms sınıfının tüm yöntemlerini ve özelliklerini kullanabilir.
Nesne Değişkenlerinin Esnekliği
Devralma hiyerarşisindeki nesnelerle çalışırken, nesne değişkenlerinizi bildirmek için hangi sınıfı kullanacağınızı tercih edebilirsiniz. Bu seçimi yaparken, nesne atama esnekliğini sınıfın üyelerine erişime karşı dengelemeniz gerekir. Örneğin, System.Windows.Forms.Form sınıfına yol açan kalıtım hiyerarşisini göz önünde bulundurun.
Uygulamanızın specialForm sınıfından türeyen Form adlı bir form sınıfı tanımladığını varsayın. Aşağıdaki örnekte gösterildiği gibi, özel olarak öğesine specialFormbaşvuran bir nesne değişkeni bildirebilirsiniz.
Public Class specialForm
Inherits System.Windows.Forms.Form
' Insert code defining methods and properties of specialForm.
End Class
Dim nextForm As New specialForm
Yukarıdaki örnekteki bildirim, değişkeni nextForm sınıfının nesneleriyle sınırlar, ancak specialForm için tüm specialForm sınıfının yöntemlerini ve özelliklerini, ayrıca nextForm üzerinden devralınan tüm sınıfların üyelerini kullanılabilir hale getirir.
Aşağıdaki örnekte gösterildiği gibi türünde olduğunu Formbildirerek bir nesne değişkenini daha genel hale getirebilirsiniz.
Dim anyForm As System.Windows.Forms.Form
Önceki örnekteki bildirim, uygulamanızdaki herhangi bir formu öğesine anyFormatamanızı sağlar. Ancak, sınıfının anyFormtüm üyelerine erişebilir, ancak Form gibi specialFormbelirli formlar için tanımlanan ek yöntemlerden veya özelliklerden hiçbirini kullanamaz.
Bir temel sınıfın tüm üyeleri türetilmiş sınıflar için kullanılabilir, ancak türetilmiş bir sınıfın ek üyeleri temel sınıf için kullanılamaz.