Rozwiązywanie problemów związanych ze zmiennymi w Visual Basic

Ta strona zawiera listę niektórych typowych problemów, które mogą wystąpić podczas pracy z zmienne w Visual Basic.

Nie można członków dostępu obiektu

Jeżeli kod nie spróbuje uzyskać dostęp do właściwości lub metody obiektu, istnieją dwa możliwe błąd wyników:

  • Kompilator może wygenerować komunikat o błędzie, jeśli zadeklarować zmienną obiektu określonego typu i odwoływać się do członka nie zdefiniowane przez tego typu.

  • Run-time MemberAccessException występuje, gdy obiekt przypisane do zmiennej obiektowej nie narażać członka kod próbuje uzyskać dostęp do.W odniesieniu do zmiennej Object — typ danych, wyjątek ten można także uzyskać, jeżeli członek nie jest Public.Jest to ponieważ późnym wiązaniem umożliwia dostęp tylko do Public członków.

Gdy Option Strict — Instrukcja kontrola typów zestawów 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.

Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = 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

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.

Właściwe podejście

Aby móc uzyskać dostęp do wszystkich członków danej klasy obiektu, należy zadeklarować zmienną obiektu, typ tej klasy, jeśli jest to możliwe.Jeśli nie możesz tego zrobić, na przykład, jeśli nie znasz obiektu, należy wpisać w czasie kompilacji, należy ustawić Option Strict do Off i zadeklarować zmienną za Object — typ danych.Dzięki temu obiekty dowolnego typu ma być przypisany do zmiennej i należy podjąć kroki w celu zapewnienia, że obiekt aktualnie przypisany jest dopuszczalne typu.Można użyć TypeOf — Operator (Visual Basic) dokonać tego oznaczania.

Inne składniki nie może uzyskać dostępu do sieci zmiennej

Visual Basicnazwy są bez uwzględniania wielkości liter.Jeżeli dwie nazwy różnią się wyłącznie wtedy, gdy alfabetycznego, kompilator interpretuje je jako taką samą nazwę.Na przykład uważa ABC i abc do odwoływania się do tego samego elementu zadeklarowanej.

Jednak używa środowiska common language runtime (CLR) liter powiązania.W związku z tym kiedy produkują zestawu lub biblioteki DLL i udostępnić inne zespoły, nazwy nie są już bez uwzględniania wielkości liter.Na przykład zdefiniować klasę z elementu o nazwie ABC, i innych zestawów, należy użyć klasy za pomocą aparatu plików wykonywalnych języka wspólnego, musi odwoływać się do elementu jako ABC.Jeśli są następnie ponownie skompilować klasy i zmienić nazwę elementu do abc, innych zestawów przy użyciu klasy może nie uzyskać dostępu do tego elementu.W związku z tym po zwolnieniu zaktualizowaną wersję zestawu nie należy zmieniać przypadku alfabetycznej elementów publicznych.

Aby uzyskać więcej informacji, zobacz Środowisko uruchomieniowe języka wspólnego (CLR).

Właściwe podejście

Aby zezwolić na inne składniki uzyskać dostęp do zmiennych, traktują ich nazwy tak, jakby były one rozróżniana wielkość liter.Kiedy testujesz klasy lub moduł, upewnij się, że pozostałe zestawy są wiążące do zmiennych, którą Twoim oczekiwaniom.Po opublikowaniu składnik, nie należy wprowadzać wszelkie zmiany w istniejącej nazwy zmiennych, łącznie ze zmianą ich przypadków.

Niewłaściwy zmiennej używany

Jeśli masz więcej niż jedną zmienną o tej samej nazwie, Visual Basic kompilatora, próbuje rozwiązać każde odniesienie do tej nazwy.Jeśli zakres różnych zmiennych, kompilator usuwa w odniesieniu do deklaracji z najwęższy zakres.Jeśli ten sam zakres, rozdzielczość kończy się niepowodzeniem i kompilator sygnalizuje błąd.Aby uzyskać więcej informacji, zobacz Odwołania do elementów zadeklarowanych (Visual Basic).

Właściwe podejście

Unikaj zmiennych o takiej samej nazwie, ale innego zakresu.Jeśli używasz innych zespołów lub projektów, unikaj wszystkie nazwy zdefiniowane w tych składników zewnętrznych możliwie.Jeśli masz więcej niż jedną zmienną o tej samej nazwie, upewnij się, że kwalifikują się wszystkie odwołania do niego.Aby uzyskać więcej informacji, zobacz Odwołania do elementów zadeklarowanych (Visual Basic).

Zobacz też

Zadania

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

Porady: określanie, do jakiego typu odnosi się zmienna obiektu (Visual Basic)

Koncepcje

Zmienne w Visual Basic

Deklaracja zmiennej w Visual Basic

Zmienne obiektów w Visual Basic

Deklaracja zmiennej obiektu (Visual Basic)

Wartości zmiennej obiektu (Visual Basic)

Odwołania do elementów zadeklarowanych (Visual Basic)

Zadeklarowane nazwy elementów (Visual Basic)