Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Visual Basic .NET

Z Wikipedii, wolnej encyklopedii
Visual Basic .NET
logo
Pojawienie się

2001

Implementacje

Microsoft Visual Studio

Aktualnawersja stabilna

16.9
(2 marca 2024) [±]

Twórca

Microsoft

Platforma sprzętowa

CLR

Platforma systemowa

Microsoft Windows

Książki w Wikibooks
Multimedia w Wikimedia Commons
Strona internetowa

Visual Basic .NET (VB.NET) –obiektowyjęzyk programowania zaprojektowany przez firmęMicrosoft. Program napisany w tym językukompilowany jest dokodu pośredniego wykonywanego w maszynie wirtualnej zgodnej z.NET. Oznacza to, że do uruchomienia programu napisanego w języku VB.Net w systemie Windows wymagana jest (zwykle bezpłatna)biblioteka uruchomieniowa taka jak.NET Framework lubMono.

Język VB.NET ma wiele cech wspólnych z językami programowaniaVisual BasicBASIC.

Nazwa

[edytuj |edytuj kod]

Nazwa może być myląca, szczególnie dla tych, którzy słyszeli o ograniczeniach Visual Basica w wersji do 6.Zaadaptowanie VB do platformy .NET częściowo wymusiło, a częściowo pozwoliło na dość duże zmiany, znacznie poszerzając możliwości języka.

Jako że jednym z celów (lub też ubocznym skutkiem) stworzenia platformy .NET było danie programiście wyboru odnośnie do stosowania składni wybranego przez siebie języka przy zachowaniu funkcjonalności, język Visual Basic .NET ma funkcjonalność bardzo podobną coC#, a kod produkowany przez kompilatory obu języków często jest identyczny.

Składnia

[edytuj |edytuj kod]

Język wywodzi się z rodziny BASIC.Jego podstawowe cechy odróżniające od rodzinyC to:

  • jedno wyrażenie występuje w jednej linii fizycznej (CR – znak końca linii). W związku z tym domyślnie nie występuje logicznieznak końca linii w postaci ";" jak w językach rodziny C. Dwie instrukcje w jednej linii fizycznej można w razie potrzeby zapisaćużywając składni "Instrukcja1 : Instrukcja2" natomiastprzeniesienie do następnej linii fizycznej można w razie potrzeby zastosować używając sekwencji " _" (spacja – podkreślenie) na końcu linii fizycznej.
  • Braknawiasów klamrowych ({}) dogrupowania bloków i kwadratowych do dostępu do tablic ([])

Każdyblok instrukcji posiada strukturę postaci

NazwaKonstrukcji [Opcje]....End NazwaKonstrukcji

np.

WhileTrue...EndWhileDoWhileTrueDoUntilFalseDoDo...LoopUntilFalseLoopWhileTrueLoopLoopForxAsDouble=-3.5To30ForyAsInteger=10To0Step-2...' KomentarzNext' Opcjonalnie Next yNext'opcjonalnie Next xClass...EndClass

Tablice definiuje się np. tak:

DimTab(4,9)AsString

co wyklucza potrzebę używania nawiasów kwadratowych w składni, a oznacza zdefiniowanie tablicy o wymiarach 5 na 10 – bo zzakresu 0..4,0..9. Wynika to z faktu, że Visual Basic (nie VB.NET) pozwalał na zdefiniowanie tablicy (_od_ To _do_) np. (5 To 100) lub używając tylko _do_ (np. (100) co implikowało (0 To 100)). Niestety tzw. Common Type System narzuca kompilatorom ograniczanie sposobu indeksowania tablic do tablic zaczynających się indeksem zerowym co wyklucza sens składni _od_ To _do_ choć sama wirtualna maszyna CIL pozwala na tworzenie tablic o indeksie początkowym innymi niż 0.

Tablice można też deklarować w stylu C (nadal 0-indeksowo).

DimTab(4)(9)AsString

gdzie sugerujemy, że każdy Tab(i) prowadzi na tablicę 10-elementową.

Można też:

DimTab(,,)AsCos' Tablica 3-wymiarowa

Wymaga to użycia

RedimTab(x,y,z)

Lub:

DimTab()()()AsCos'Tablica tablicy tablicy - tablica 3-wymiarowa

Wymaga toinicjalizacji zmiennej Tab Tablica(Array), każdego elementu tablicy tablica, i każdego elementu tej tablicy Cosiem.Trzeba jednak pamiętać, że tablica T()() oraz T(,) mają odzwierciedlenie w postaci innych typów w prekompilowanym pseudokodzie CIL.

  • Język jest nieczuły na wielkość znaków widentyfikatorach isłowach kluczowych a-z ⇔ A-Z
  • Alokacją i zwalnianiem pamięci zarządzagarbage collector.
  • Nie ma jawnego dostępu do wskaźników. Można uzyskać do nich dostęp ale okrężną drogą gwarantującą jednak bezpieczeństwo pracy na pamięci.
  • Dostęp do obiektów następuje poprzezreferencje (kompensujące brakwskaźników)
  • Nawiasy klamrowe występują tylko przy określaniu elementów tablicy
DimAAsString={"A","B","C"}DimBAsKlasa={NewKlasa,NewKlasa,NewKlasa}JakasFunkcja(2,"abc",NewKlasa(){NewKlasa,NewKlasa},44,55)DimCAsObject=NewString(){"A","B","C","D"}
  • generyczność znana np. zAda 95 czyC++ jako <template>
  • brakoperatora porównania "==" czy operatora przypisania ":="

Występuje jeden operator "=" oznaczającyprzypisanie lub porównanie.Kompilator przyjmuje, że jeżeli wyrażenie ma postać

Zmienna=Dalszewyrażenie

Lub

DimZmiennaAsTyp=Dalszewyrażenie

oznacza to przypisanie wartości z prawej strony do zmiennej Zmienna.W innych przypadkach "=" porównuje wyrażenia zwracając wartość boolowską.np.

DimAAsBoolean,B,CAsIntegerA=B=C

oznacza, że wartości liczb B i C zostaną porównane, a wynik tego porównania zostanie zwrócony jako 'True' lub 'False' a to z kolei przypisane do zmiennej A.Podobnie w składni warunkowej

Ifzmienna=zmiennaThen...ElseIfwarunekThen...Else...EndIf

Operator ":=" występuje natomiast przy odwoływaniu się do parametrów funkcji i procedur z użyciem notacji imiennejnp.

JakasProcedura(jakis_parametr:=wartosc1,inny_parametrr:=wartosc2)

Jest to przydatne gdy dana funkcja (procedura) przyjmuje dużą ilośćargumentów opcjonalnych.

  • Łańcuchy znaków zamykane są w cudzysłowach ("). Jeżeli trzeba w Stringu użyć cudzysłowu używa się podwójnego znaku cudzysłowu
DimaAsString="A wtedy on powiedział ""Dajcie mi spokój."""' A zawiera: A wtedy on powiedział "Dajcie mi spokój."

Nie występują znaki specjalne w formacie \" \n itp.

DimbAsString="zmienna x="""&a&""""&Chr(10)&_"następna linijka."'b zawiera: zmienna x="A wtedy on powiedział "Dajcie mi spokój.""'           następna linijka.

W tej kwestii rodzina Basic zachowuje się podobnie do języka Ada.Znak 10 to znak końca linii tak więc Chr(10) daje znak końca linii. Chr() zwracający znak o kodzie podanym jakoargument jestfunkcją inline, także w trakcie kompilacji zamienia się w znak końca linii (wniosek: nie różni się prędkością wykonywania kodu od znanego z C "\n").

  • Imports,With,Using

Imports do ustalania domyślnych przestrzeni nazw.With do skracania ścieżki dostępu przy pracy z obiektamio dużych zagnieżdżeniach.Using również do pracy na obiektach.Przemianowujące zmienną lubtworzące zmienną na obszar bloku using i implikujące zarazem blok Try Catch

  • Wbudowana w składnię obsługa synchronizacji wątków. –SyncLock

Dalsze przykładowe programy

[edytuj |edytuj kod]

Prosty program napisany w języku VB.NET. Po jego skompilowaniu i uruchomieniu zobaczymy napis „Hello world!”.

ImportsSystemPublicClassPrzykladowaKlasaPublicSharedSubMain()'Procedura współdzielona między instancjami klasySystem.Console.WriteLine("Hello world")ForiAsInteger=1To10System.Console.WriteLine("To jest linia "&i)NextEndSubEndClass

Lub

ModuleNazwaModulu'Moduł jako bezobiektowy element grupujący w przestrzeń nazw.PublicSubMain()' nie ma słowa Shared bo moduł wydziela kod, natomiast' nie ma możliwości powołania obiektu typu modułowegoSystem.Console.WriteLine("Hello world")ForiAsInteger=1To10System.Console.WriteLine("To jest linia "&i)NextEndSubEndModule

Zamiast pisać System.Console.WriteLine można wykorzystać specjalną składnię do pracy z obiektem:

PublicSubMain()WithSystem.Console.WriteLine("Hello world")ForiAsInteger=1To10.WriteLine("To jest linia "&i)NextEndSub

Kolejny przykładowy program demonstruje technikę programowania interfejsu graficznego (GUI). Po jego skompilowaniu i uruchomieniu system operacyjny utworzy okienko aplikacji.

ImportsSystem'Domyślnie szukaj elementów w SystemImportsSystem.Windows.Forms'a także w System.Windows.FormsPublicClassPrzykladoweOknoInheritsForm'Konstruktor z dziedziczeniem konstruktora macierzystegoSubNew()MyBase.New()EndSubPublicSharedSubMain()Application.Run(NewPrzykladoweOkno());EndSubEndClass

Następny przykład pokazuje konstrukcję interfejsu, czyli rodzaju nagłówka klasy definiującego mechanizmy implementowane przez klasę.Klasa, która implementuje pewien interfejs (co programista może łatwo sprawdzić (If TypeOf NazwaObiektu Is IJakisInterfejs)), zobowiązuje się posiadać zaadaptowane do swoich warunków wszystkie procedury, funkcje, właściwości, zdarzenia itd. określone w interfejsie.

InterfaceINazwaInheritsInnyInterfejsSubCosRob()ReadOnlyPropertyCosAsIntegerEndInterface

Zobacz też

[edytuj |edytuj kod]

(inne języki platformy .NET)

(platforma .NET)

Linki zewnętrzne

[edytuj |edytuj kod]
Języki programowania
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
istrukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne
Platforma .NET
języki wspierane standardowo przezVS
inne języki i środowiska
alternatywne implementacje platformy
Źródło: „https://pl.wikipedia.org/w/index.php?title=Visual_Basic_.NET&oldid=78745084
Kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp