Nesne Değişken Bildirimi (Visual Basic)
Nesne değişkenlerini bildirmek için normal bir bildirim deyimi kullanırsınız. Veri türü için, nesnenin oluşturulacağı (Nesne Veri Türü) veya daha özel bir sınıf belirtirsiniz Object
.
bir değişkeni olarak Object
bildirmek, olarak bildirmekle System.Objectaynı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. ile Objectdeğişkenini bildirirseniz, geç bağlamaya izin vermediğiniz sürece Option Strict Off
yalnızca sınıfın Object üyelerine erişebilir.
Bildirim Sözdizimi
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 başvuru oluşturur ve belirli sınıf çalışma zamanı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 Strict
On
, nesne değişkeni yalnızca onu bildirdiğiniz sınıfın yöntemlerine ve özelliklerine erişebilir. Aşağıdaki örnek bunu göstermektedir.
' 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
yalnızca özelliğini içermeyen sınıfın Object üyelerini Left
kullanabilir. Öte yandan, türünde Labelolduğu bildirildi, q
bu nedenle ad alanında System.Windows.Forms sınıfın Label 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, sınıfına yol açan devralma hiyerarşisini System.Windows.Forms.Form göz önünde bulundurun:
Uygulamanızın sınıfından devralan adlı specialForm
bir form sınıfı Formtanımladığı varsayın. Aşağıdaki örnekte gösterildiği gibi, özel olarak öğesine specialForm
baş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şkenini nextForm
sınıfının specialForm
nesneleriyle sınırlar, ancak tüm yöntemlerinin ve özelliklerinin specialForm
yanı sıra devralınan tüm sınıfların specialForm
tüm üyelerini de için kullanılabilir nextForm
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 anyForm
atamanızı sağlar. Ancak, sınıfının Formtüm üyelerine erişebilir, ancak anyForm
gibi specialForm
belirli 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.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin