Istnieją tylko trzy sposoby organizacji VB.NET podanie.
- Moduły
- Struktury
- Klasy
Ale większość artykułów technicznych zakłada, że już o nich wiesz. Jeśli jesteś jednym z wielu, którzy wciąż mają kilka pytań, możesz po prostu przeczytać pomylone fragmenty i spróbować je rozwiązać. A jeśli masz los czasu możesz rozpocząć wyszukiwanie Microsoft dokumentacja:
- „Moduł to przenośny plik wykonywalny, taki jak type.dll lub application.exe, składający się z co najmniej jednej klasy i interfejsów.”
- „Instrukcja klasy definiuje nowy typ danych”.
- „Instrukcja Struktura definiuje złożony typ wartości, który można dostosować.”
Tak więc. Jakieś pytania?
Aby być nieco bardziej uczciwym wobec Microsoft, mają strony i strony (i więcej stron) informacji o tych wszystkich, przez które można się przedzierać. I muszą być tak dokładne, jak to możliwe, ponieważ wyznaczają standard. Innymi słowy, dokumentacja Microsoftu czasami brzmi jak książka prawnicza, ponieważ tak jest jest książka prawnicza.
Ale jeśli dopiero uczysz się .NET, może to być bardzo mylące! Musisz gdzieś zacząć. Zrozumienie trzech podstawowych sposobów pisania kodu w VB.NET to dobry początek.
Możesz pisać VB.NET kod przy użyciu dowolnej z tych trzech form. Innymi słowy, możesz utworzyć Aplikacja konsoli w VB.NET Express i napisz:
Moduł Moduł 1
Sub Main ()
MsgBox („To jest moduł!”)
Napis końcowy
Moduł końcowy
Klasa Klasa 1
Sub Main ()
MsgBox („This is a Class”)
Napis końcowy
Klasa końcowa
Struktura Struktura 1
Dim myString As String
Sub Main ()
MsgBox („To jest struktura”)
Napis końcowy
Struktura końcowa
To nie robi każdy sens oczywiście jako program. Chodzi o to, że nie pojawia się błąd składniowy, więc jest to „legalne” Kod VB.NET.
Te trzy formy to jedyny sposób na zakodowanie korzenia królowej pszczół całego systemu .NET: obiektu. Jedynym elementem, który zakłóca symetrię trzech form, jest stwierdzenie: Dim myString As String. Ma to związek z tym, że Struktura jest „złożonym typem danych”, jak stwierdza Microsoft w swojej definicji.
Inną rzeczą, którą należy zauważyć, jest to, że wszystkie trzy bloki mają Sub Main () w nich. Zwykle nazywana jest jedna z najbardziej podstawowych zasad OOP kapsułkowanie. Jest to efekt „czarnej skrzynki”. Innymi słowy, powinieneś być w stanie traktować każdy obiekt z osobna, a jeśli chcesz, możesz używać podprogramów o identycznych nazwach.
Klasy
Zajęcia są „właściwym” miejscem do rozpoczęcia, ponieważ, as Microsoft zauważa: „Klasa jest podstawowym elementem programowania obiektowego (OOP)”. W rzeczywistości niektórzy autorzy traktują moduły i struktury tylko jako specjalne rodzaje klas. Klasa jest bardziej obiektowa niż moduł, ponieważ jest to możliwe instancja (wykonaj kopię) klasy, ale nie modułu.
Innymi słowy, możesz kodować ...
Formularz klasy publicznej 1
Private Sub Form1_Load (_
ByVal nadawca jako system. Obiekt, _
ByVal e As System. EventArgs) _
Obsługuje MyBase. Załaduj
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
Napis końcowy
Klasa końcowa
(Podkreślono tworzenie instancji klasy.)
Nie ma znaczenia, czy sama klasa, w tym przypadku ...
Klasa publiczna 1
Sub ClassSub ()
MsgBox („To jest klasa”)
Napis końcowy
Klasa końcowa
... jest w pliku sam lub jest częścią tego samego pliku z Formularz 1 kod. Program działa dokładnie w ten sam sposób. (Zauważ, że Formularz 1 to także klasa).
Możesz także napisać kod klasy, który zachowuje się bardzo podobnie do modułu, to znaczy bez jego tworzenia. To się nazywa Udostępniono klasa. Artykuł „Statyczny” (czyli „Udostępniony”) a typy dynamiczne w VB.NET wyjaśnia to o wiele bardziej szczegółowo.
Należy również pamiętać o innym fakcie na temat zajęć. Członkowie (właściwości i metody) klasy istnieją tylko wtedy, gdy istnieje instancja klasy. Nazywa się to zakres. To jest zakres wystąpienie klasy jest ograniczone. Powyższy kod można zmienić, aby zilustrować ten punkt w następujący sposób:
Formularz klasy publicznej 1
Private Sub Form1_Load (_
ByVal nadawca jako system. Obiekt, _
ByVal e As System. EventArgs) _
Obsługuje MyBase. Załaduj
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Nic
myNewClass. ClassSub ()
Napis końcowy
Klasa końcowa
Kiedy drugi myNewClass. ClassSub () instrukcja jest wykonywana, a NullReferenceException błąd jest zgłaszany, ponieważ ClassSub członek nie istnieje.
Moduły
W VB 6 często zdarzały się programy, w których większość kodu znajdowała się w module (A .BAS, plik zamiast na przykład w pliku Formularz plik taki jak Form1.frm.) W VB.NET znajdują się zarówno moduły, jak i klasy .VB akta. Głównym powodem, dla którego moduły są zawarte w VB.NET, jest umożliwienie programistom zorganizowania swoich systemów poprzez umieszczenie kodu w różnych miejscach w celu precyzyjnego dostrojenia zakresu i dostępu do ich kod. (To znaczy, jak długo istnieją elementy modułu i jaki inny kod może odnosić się do nich i korzystać z nich.) Czasami możesz chcieć umieścić kod w osobnych modułach, aby ułatwić sobie pracę.
Wszystkie moduły VB.NET są Udostępniono ponieważ nie można ich utworzyć (patrz wyżej) i można je oznaczyć Przyjaciel lub Publiczny dzięki czemu można uzyskać do nich dostęp w ramach tego samego zestawu lub za każdym razem, gdy są do nich odniesienia.
Struktury
Struktury są najmniej rozumianą z trzech form przedmiotów. Gdybyśmy mówili o „zwierzętach” zamiast „przedmiotach”, struktura byłaby Aardvark.
Duża różnica między strukturą a klasą polega na tym, że struktura to typ wartości a klasa to typ odniesienia.
Co to znaczy? Tak się cieszę, że zapytałeś.
Typ wartości to obiekt przechowywany bezpośrednio w pamięci. Na Liczba całkowita jest dobrym przykładem typu wartości. Jeśli zadeklarowałeś Liczba całkowita w twoim programie takim jak ten ...
Dim myInt jako Integer = 10
... i sprawdziłeś lokalizację pamięci zapisaną w myInt, znajdziesz wartość 10. Widzisz to również jako „przydzielane na stosie”.
Stos i sterta to po prostu różne sposoby zarządzania wykorzystaniem pamięci komputera.
Typ odniesienia to obiekt, w którym lokalizacja obiektu jest przechowywana w pamięci. Tak więc znalezienie wartości dla typu referencyjnego jest zawsze wyszukiwaniem dwuetapowym. ZA Strunowy jest dobrym przykładem typu odniesienia. Jeśli zadeklarowałeś Strunowy lubię to ...
Dim myString as String = "To jest myString"
... i sprawdziłeś lokalizację pamięci zapisaną w myString, znajdziesz inną lokalizację pamięci (zwaną a wskaźnik - ten sposób robienia rzeczy jest sercem języków w stylu C). Musisz znaleźć się w tej lokalizacji, aby znaleźć wartość „This is myString”. Jest to często nazywane „przydzielaniem na stos”. Stos i kupa
Niektórzy autorzy twierdzą, że typy wartości nie są nawet obiektami i tylko typy referencyjne mogą być obiektami. Z pewnością jest prawdą, że wyrafinowane cechy obiektu, takie jak dziedziczenie i kapsułkowanie są możliwe tylko w przypadku typów referencyjnych. Ale cały ten artykuł rozpoczęliśmy od stwierdzenia, że istnieją trzy formy dla obiektów, więc muszę zaakceptować fakt, że struktury są jakimś przedmiotem, nawet jeśli są to obiekty niestandardowe.
Początki programowania struktur sięgają języków zorientowanych na pliki, takich jak Cobol. W tych językach dane były zwykle przetwarzane jako sekwencyjne płaskie pliki. „Pola” w rekordzie z pliku zostały opisane w sekcji „definicja danych” (czasami nazywanej „układem rekordów” lub „zeszytem”). Więc jeśli rekord z pliku zawierał:
1234567890ABCDEF9876
Jedynym sposobem, aby wiedzieć, że „1234567890” był numerem telefonu, „ABCDEF” był identyfikatorem, a 9876 to 98,76 USD dzięki definicji danych. Struktury pomagają to osiągnąć w VB.NET.
Struktura Struktura 1
Struktura końcowa
Ponieważ Strunowy jest typem referencyjnym, konieczne jest utrzymanie tej samej długości z VBFixedString atrybut dla rekordów o stałej długości. Rozszerzone objaśnienie tego atrybutu i atrybutów ogólnie można znaleźć w artykule Atrybuty w VB .NET.
Chociaż struktury są niestandardowymi obiektami, mają wiele możliwości w VB.NET. Możesz kodować metody, właściwości, a nawet zdarzenia i procedury obsługi zdarzeń w strukturach, ale możesz także użyć bardziej uproszczonego kodu, a ponieważ są to typy wartości, przetwarzanie może być szybsze. Na przykład, możesz przekodować powyższą strukturę w następujący sposób:
Struktura Struktura 1
Sub mySub ()
MsgBox („To jest wartość myPhone:” i myPhone)
Napis końcowy
Struktura końcowa
I użyj tego w ten sposób:
Dim myStruct As Structure 1
myStruct.myPhone = "7894560123"
myStruct.mySub ()
Warto poświęcić trochę czasu na zabawę ze strukturami i dowiedzieć się, co potrafią. Są jednym z dziwnych zakątków VB.NET, które mogą być magiczną kulą, gdy jej potrzebujesz.