Deklaracja zmiennej obiektu (Visual Basic)

Instrukcja deklaracji normalnych umożliwia deklarowanie zmiennej obiektu.Dla typu danych, określ albo Object (to znaczy Object — typ danych) lub więcej określonej klasy, z którego ma zostać utworzony obiekt.

Deklarując zmienną jako Object jest taka sama jak deklarowanie go jako Object.

Przy deklarowaniu zmiennej z klasą określonego obiektu, może uzyskać dostęp do metod i właściwości udostępniane przez tę klasę i klas, z których dziedziczy.Przy deklarowaniu zmiennych z Object, może uzyskać dostęp tylko członkowie Object klasy, chyba że można włączyć Option Strict Off do umożliwienia późnego wiązania.

Składnia deklaracji

Aby zadeklarować zmienną obiektu, należy użyć następującej składni:

Dim variablename As [New] { objectclass | Object }

You can also specify Public (Visual Basic), Protected (Visual Basic), Friend (Visual Basic), Protected Friend, Private (Visual Basic), Shared (Visual Basic), or Static (Visual Basic) in the declaration.Prawidłowe są następujące deklaracje przykład:

Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem

Późnym wiązaniem i wczesne wiązanie

Czasami określonej klasy jest nieznana, dopóki ten kod działa.W takim przypadku należy zadeklarować zmienną obiektu, z Object typu danych.Spowoduje to utworzenie ogólne odniesienia do dowolnego typu obiektu i określonej klasy jest przypisywany w czasie wykonywania.Jest to tak zwane późnego wiązania.Późnym wiązaniem wymaga dodatkowego czasu wykonania.Ogranicza również kod do metod i właściwości klasy, które ostatnio zostały przypisane do niego.To może spowodować błędy w czasie wykonywania kodu próbuje dostęp członkowie innej klasy.

Znając określonej klasy w czasie kompilacji, należy zadeklarować zmienną obiektu, być tej klasy.Jest to tak zwane wczesnego wiązania.Wczesne wiązanie poprawia wydajność i gwarantuje dostęp do metod i właściwości określonej klasy kodu.W poprzednim deklaracje przykład, jeśli zmienna objA używa obiektów klasy Label, należy określić As System.Windows.Forms.Label w swojej deklaracji.

Zalety wczesnego wiązania

Deklarowanie zmiennej obiektu jako określonej klasy daje wiele korzyści:

  • Sprawdzanie typu automatyczne

  • Zapewniony dostęp do wszystkich członków określonej klasy

  • Obsługa technologii Microsoft IntelliSense w edytorze kodu

  • Ulepszona czytelność kodu programu

  • Mniej błędów w kodzie

  • Błędy złowionych na czas kompilacji raczej niż czas jednostkowy

  • Szybsze wykonywanie kodu

Dostęp do obiektu zmiennej członków

Gdy Option Strict jest włączony On, zmiennej obiektowej można uzyskać dostęp do metod i właściwości klasy, z której można zadeklarować.Poniższy przykład ilustruje to.

' 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

W tym przykładzie p można używać tylko członkowie Object klasy, które nie obejmują Left właściwości.Z drugiej strony q została uznana za typu Label, więc można użyć, metod i właściwości Label klasy w System.Windows.Forms obszaru nazw.

Elastyczność zmienne obiektowe

Podczas pracy z obiektami w hierarchii dziedziczenia, masz wybór klasy deklarowania zmiennych obiektu.Dokonując wyboru, musisz rozłożyć elastyczności przydziału obiekt przed dostępem do elementy klasy.Na przykład, rozważmy hierarchii dziedziczenia, która prowadzi do Form klasy:

Object

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

Załóżmy, że aplikacja definiuje klasy formularza o nazwie specialForm, która dziedziczy z klasy Form.Można zadeklarować zmienną obiektu, która odnosi się konkretnie do specialForm, jak pokazano na poniższym przykładzie.

Public Class specialForm
    Inherits System.Windows.Forms.Form
    ' Insert code defining methods and properties of specialForm.
End Class
Dim nextForm As New specialForm

Oświadczenie w poprzednim przykładzie ogranicza zmiennej nextForm do obiektów klasy specialForm, ale powoduje to również metody i właściwości specialForm dostępne do nextForm, jak również wszystkich członków wszystkich klas, z którego specialForm dziedziczy.

Bardziej ogólne zmiennej obiektowej można wprowadzać ona być typu Form, jak pokazano na poniższym przykładzie.

Dim anyForm As System.Windows.Forms.Form

Oświadczenie w poprzednim przykładzie pozwala przypisać każdy formularz w aplikacji, aby anyForm.Jednakże chociaż anyForm można uzyskać dostęp do wszystkich członków klasy Form, to nie można używać żadnych dodatkowych metod lub właściwości zdefiniowane dla szczególnych formularzy, takich jak specialForm.

Wszystkich członków klasy podstawowej są dostępne dla klas pochodnych, ale dodatkowych członków klasy pochodne są niedostępne dla klasy podstawowej.

Zobacz też

Zadania

Porady: deklarowanie zmiennej obiektu i przydzielanie obiektu do It w Visual Basic

Porady: dostęp do elementów członkowskich obiektu (Visual Basic)

Informacje

New — Operator (Visual Basic)

Option Strict — Instrukcja

Koncepcje

Zmienne obiektów w Visual Basic

Przypisanie zmiennej obiektu (Visual Basic)

Wartości zmiennej obiektu (Visual Basic)

Wnioskowanie o typie lokalnym (Visual Basic)