Struktury i klas (Visual Basic)
Visual Basicunifikuje składni struktur i klas, z wynikiem, że obie te jednostki obsługują większość te same funkcje.Jednakże istnieją również ważne różnice między strukturami i klas.
Klasy mają tę zaletę, że typy odwołań — przekazując odwołanie jest bardziej wydajny niż przekazanie zmiennej struktury z jego danych.Z drugiej strony struktur nie wymagają alokacji pamięci na stercie globalnego.
Polecenie nie może dziedziczyć struktury, struktur powinno być używane tylko dla obiektów, które nie muszą być przedłużony.Gdy obiekt, który chcesz utworzyć ma rozmiar instancji małych i wziąć pod uwagę cechy wydajności klas kontra struktur, należy użyć struktur.
Podobieństwa
Struktury i klasy są podobne pod następującymi względami:
Obie są kontenera typów, co oznacza, że zawierają one innych typów jako członków.
Mieć zarówno członków, obejmujące konstruktory, metody, właściwości pól, stałych, wyliczeń, zdarzenia i procedury obsługi zdarzeń.Jednakże nie należy mylić tych członków z deklarowanym elementów struktury.
Członkowie obu, można zindywidualizowanych poziomy dostępu.Na przykład, jeden członek może być deklarowana Public i innym Private.
Oba mogą zawierać interfejsy.
Można mieć wspólnych konstruktory, z lub bez parametrów.
Zarówno może narazić domyślną właściwość, pod warunkiem, że właściwość przyjmuje co najmniej jeden parametr.
Zarówno można zadeklarować wywołania zdarzeń i zarówno można zadeklarować delegatów.
Różnice
Struktury i klas różnią się w następujące dane szczegółowe:
Struktury są typów wartości; klasy są Typy odwołań.Zmienna typu Struktura zawiera strukturę danych, a nie zawierających odwołania do danych jako typ klasy jest.
Struktury stosowana jest Alokacja stosu; klasy stosowana jest alokacja sterty.
Wszystkie elementy struktury są Public domyślnie; Klasa zmiennych i stałych są Private domyślnie, podczas gdy inni członkowie klasy są Public domyślnie.To zachowanie dla członków klasy zapewnia zgodność z systemu Visual Basic 6.0 ustawień domyślnych.
Struktura musi mieć co najmniej jeden nieudostępnionym noncustom zmiennej lub nieudostępnionym, element zdarzeń; Klasa może być całkowicie pusty.
Elementy struktury nie mogą być zadeklarowane jako Protected; Członkowie klasy można.
Procedura struktury mogą obsługiwać zdarzenia, tylko wtedy, gdy jest on Udostępnione (Visual Basic)Sub procedury i wyłącznie z zastosowaniem Instrukcja AddHandler; wszelkie procedury klasy może obsłużyć zdarzenia za pomocą Klauzula Handles (Visual Basic) słowa kluczowego lub AddHandler instrukcji.Aby uzyskać więcej informacji, zobacz Zdarzenia (Visual Basic).
Deklaracje zmiennych w strukturze nie można określić inicjatory lub początkowe rozmiary dla tablic; deklaracje zmiennych klasy można.
Struktury niejawnie dziedziczą z System.ValueType klasy i nie może dziedziczyć z innego typu; klasy mogą dziedziczyć wszystkie klasy lub klas innych niż System.ValueType.
Struktury nie są dziedziczone; dostępne są następujące klasy.
Struktury są nigdy nie zakończone, więc common language runtime (CLR) nigdy nie wywoła Finalize metody na każdą strukturę; klasy są zakończone przez garbage collector (GC), który z kolei wywołuje Finalize na klasie, gdy wykryje, że istnieją nie aktywne odwołań pozostałych.
Struktury nie wymaga konstruktora; Klasa działa.
Struktury mogą mieć konstruktorów nieudostępnionym tylko wtedy, gdy podejmują parametrów; klasy mogą mieć je z lub bez parametrów.
Każda konstrukcja posiada niejawny publicznego konstruktora bez parametrów.Ten konstruktor jest inicjowana struktury wszystkich danych elementów do ich wartości domyślnych.Nie można ponownie zdefiniować zachowanie.
Instancje i zmiennych
Ponieważ struktury są typy wartości, każda zmienna struktury trwale jest związany z wystąpieniem struktury poszczególnych.Ale klas są typy odwołań i zmienną obiektu może odnosić się do różnych instancji klasy w różnym czasie.Rozróżnienie to ma wpływ na wykorzystanie sieci struktur i klas w następujący sposób:
Inicjowanie. Zmienna struktury obejmuje niejawnie inicjowania elementy przy użyciu konstruktora bez parametrów struktury.W związku z tym Dim s As struct1 jest równoważne z Dim s As struct1 = New struct1().
Służy do przypisywania zmiennych. Gdy przypisać jednej zmiennej struktury do innego lub przekazać instancji struktury argumentu procedury bieżącej wartości zmiennej elementy są kopiowane do nowej struktury.Przypisać zmiennej jednego obiektu do innego lub przekazać zmiennej obiektowej procedurę tylko wskaźnik odwołania są kopiowane.
Przypisywanie Nothing. Można przypisać wartość Nic (Visual Basic) do struktury zmiennej, ale wystąpienie nadal być skojarzone ze zmienną.Można nadal wywołanie jej metod i dostępu jego elementów danych, chociaż ustawienie zmiennej elementy są ponownie inicjowane przez przypisanie.
W odróżnieniu, jeśli ustawiona jest zmienna obiektu Nothing, dissociate go z dowolnej instancji klasy i członków nie dostęp za pośrednictwem zmiennej do innego wystąpienia należy przypisać do niej.
Wiele wystąpień. Zmienną obiektu może mieć różne klasy wystąpień powierzonych mu w różnym czasie i kilku zmiennych obiektu może odnosić się do tego samego wystąpienia klasy w tym samym czasie.Zmiany wprowadzone w wartości członkowie klasy wpływają na tych członków, gdy za pośrednictwem innej zmiennej, wskazując tym samym wystąpieniu.
Elementy struktury, jednak są odizolowane w obrębie ich własnej instancji.Zmiany do ich wartości nie są odzwierciedlane w jakichkolwiek innych zmiennych struktury, nawet w innych wystąpień tego samego Structure deklaracji.
Równości. Równość badania konstrukcji dwóch można wykonać z testu element po elemencie.Dwie zmienne obiektów można porównać przy użyciu Equals metody.EqualsWskazuje, czy dwie zmienne wskaż tego samego wystąpienia.
Zobacz też
Zadania
Rozwiązywanie problemów z typów danych (Visual Basic)
Koncepcje
Typy danych języka Visual Basic
Złożone typy danych (Visual Basic)
Struktury i innych elementów programowania (Visual Basic)