Aracılığıyla paylaş


Nesne Değişkeni Bildirimi (Visual Basic)

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.

Object

  MarshalByRefObject

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

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.

Ayrıca bakınız