Penki populiariausi pakeitimai iš VB 6 į VB.NET

01

nuo 08

Penki populiariausi pakeitimai tarp VB 6 ir VB.NET

Penki populiariausi pokyčiai

Visual Basic 1.0 buvo didelis žemės drebėjimas per visą programavimą. Prieš VB1, kurdami „Windows“ programas, turėjote naudoti C, C ++ ar kitą siaubingą kūrimo aplinką. Programuotojai tiesiogine prasme praleido savaites tiesiog piešdami langus ant ekranų, rinkdamiesi išrankusį, išsamų, sunkiai suderinamą kodą. (Tą patį veiksmą galite padaryti per kelias sekundes vilkdami formą iš įrankių juostos.) VB1 buvo populiarus įvykis, o gazillionai programuotojų iškart pradėjo juo naudotis.

Tačiau kad įvyktų stebuklas, „Microsoft“ padarė keletą pagrindinių architektūros kompromisų. Visų pirma, kadangi VB1 sukūrė formas ir valdiklius, jie neleido programuotojui pasiekti kodo, kuris tai padarė. Jūs arba leidote VB kurti viską, arba jūs naudojote C ++.

VB 2–6 išlaikė tą pačią architektūrą. „Microsoft“ padarė keletą labai protingų atnaujinimų, kurie programuotojams suteikė daug daugiau valdymo galimybių, tačiau galiausiai programišiai vis tiek negalėjo integruoti savo kodo su VB kodu. Tai buvo juodoji dėžutė - ir ne taip gerai, kaip OOP. Kitas būdas tai pasakyti buvo tai, kad programuotojas neturėjo prieigos prie vidinių VB „objektų“, ir dar vienas būdas pasakyti, kad VB6 vis dar nebuvo visiškai „orientuotas į objektą“.

instagram viewer

02

nuo 08

VB 6 - atsilikimas nuo technologijos kreivės

Tuo tarpu pradėjo atsirasti „Java“, „Python“ ir daugybė kitų programavimo kalbų, kurios WERE buvo orientuotos į objektus. „Visual Basic“ buvo perduota - didelis laikas! Tai yra situacija, kurios „Microsoft“ netoleruoja... ir jie ryžosi kartą ir visiems laikams išspręsti problemą. Sprendimas yra .NET.

Tačiau norėdama atlikti dalykus, kuriuos turėjo atlikti .NET, „Microsoft“ nusprendė, kad jie turi „nutraukti suderinamumą“. T. y., „Visual Basic“ programos buvo (suderintos su labai nedidelėmis išimtimis) „suderinamos aukštyn“ nuo VB1 iki VB6. Programa, parašyta toje pirmoje VB versijoje, vis tiek sudarys ir vykdys kitą versiją. Tačiau naudodama „VB.NET“, „Microsoft“ nustatė, kad jie tiesiog negalėjo visiškai pakeisti kalbos ir išlaikyti suderinamumą aukštyn.

Priėmus šį esminį sprendimą, potvynio vartai atsivėrė per dešimt metų susikaupusio „norų sąrašo“ pokyčius ir visi jie pateko į naująjį VB.NET. Kaip sakoma Didžiojoje Britanijoje, „už centą, už svarą“.

Netrukus vėl pateiksiu mano asmeninį penkių geriausių pakeitimų sąrašą iš VB6 į VB.NET atvirkštine tvarka.

Wellllll... tik dar vienas delsimas. Kadangi mes keičiamės iš VB6, kur masyvas paskelbtas Dim myArray (5) turi 6 elementų, mes turime šešis iš jų. Tai tik tinka ...

(Būgno ritinėlis prašau ...)

03

nuo 08

Apdovanojimas (5) - C tipo sintaksės pakeitimai

„Apdovanojimas (5)“, mūsų 6 vieta apdovanojimas atitenka „C groupies“ pasirinkimui: C tipo sintaksės pokyčiai!

Dabar galite koduoti + = 1, o ne a = a + 1, sutaupydami TRIS VISUS KEYSTROKUS!

Programuotojai pasaulyje, džiaukis! VB buvo pakeltas iki C lygio, ir visiškai nauja karta, bandanti išmokti VB, šiek tiek priartės prie masinės sumaišties, su kuria susiduria C ++ klasės mokiniai.

Bet palauk! Yra dar daugiau!

VB.NET dabar pasižymi „trumpojo jungimo logika“, kuri metų metus įvedė subtilias klaidas į C ++ kodą, kad būtų sutaupytos brangios nano-sekundės procesoriaus laiko. Trumpojo jungimo logika įvertina tik keletą sąlygų loginiame teiginyje, jei to reikia. Pavyzdžiui:

Dim R Kaip Boolean
R = Funkcija1 () ir Funkcija2 ()

VB6 programoje abi funkcijos įvertinamos, ar jos reikalingos, ar ne. Jei naudojant VB.NET, Funkcija1 () yra klaidinga, Funkcija2 () yra ignoruojama, nes „R“ negali būti teisinga. O kas, jei globalus kintamasis bus pakeistas „Function2“ () - tiesiog atsitiktinai („C ++“ programuotojai pasakytų „ prastas programavimas ".) Kodėl mano kodas išveda klaidingą atsakymą tam tikrą laiką, kai jis išverstas į VB.NET? Tai gali būti!

Dėl BandytiKuo sunkiau, VB.NET Pagauk šiek tiek sėkmės ir Pagaliau gauti pripažinimą už „išskirtinį“ klaidų tvarkymą.

„VB6“ turėjo paskutinį „GoTo“ sustabdymą: „On Error GoTo“. Netgi turiu pripažinti, kad C ++ stiliaus „Try-Catch-Pagaliau“ struktūrizuotas išimčių tvarkymas yra didelis patobulinimas, o ne tik pusė didžiulio patobulinimo.

Ką jūs sakote „On Error GoTo“ vis dar yra VB.NET? Wellll... Mes stengiamės per daug apie tai nekalbėti.

04

nuo 08

5 vieta - įvairūs komandos pakeitimai

5 vieta atranka yra grupės apdovanojimas: Įvairūs komandos pakeitimai! Jie turi dalytis šiuo apdovanojimu ir yra milijonas jų. „Microsoft“ taupė dešimt metų, ir jie iš tikrųjų sumažėjo.

VB.NET nebepalaiko VarPtr, ObjPtr ir StrPtr funkcijų, kurios nuskaito kintamųjų atminties adresą. Ir jis nepalaiko „VB6 LSet“, kuris buvo naudojamas konvertuoti vieno vartotojo apibrėžtą tipą į kitą. (Negalima painioti su „VB6 LSet“, kuris daro visiškai ką kita - žr. Žemiau.)

Mes taip pat siūlome „Ad, trūksta“, „DefBool“, „DefByte“, „DefLng“, „DefCur“, „DefSng“, „DefDbl“, „DefDec“, „DefDate“, „DefStr“, „DefObj“, „DefVar“ ir (mano asmeninis mėgstamiausias!) „GoSub“.

Draugų ratas tapo „GDI + DrawEllipse“. Tas pats pasakytina ir apie „Line to DrawLine“. Apskaičiuojant, dabar mes turime „Atan“, o ne „Atn“, „Sign“ reiškia „Sgn“, o „Sqrt“ tinka dideliam žaidimui, o ne „Sqr“.

Apdorojant eilutes, net jei jos vis dar prieinamos, jei nurodote „Microsoft“ suderinamumą vardų sritį, turime „PadRight“, skirtą „VB6 LSet“ (vėlgi, visiškai skirtingi nei „VB6 LSet“, žinoma) ir „PadLeft“ RSet. (Yra trys klavišų paspaudimai, kuriuos išsaugojome „+ =“!)

Ir, žinoma, kadangi dabar dirbame OOP, nesibaiminkitės, jei VB.NET netenkins „Property Set“, „Property Let“ ir „Property Get“, bet jūs statykite!

Pagaliau Debug. Spausdinimas tampa „Debug“. Rašykite arba derinkite. „WriteLine“. Tik nervai vis tiek viską atspausdina.

Tai net neliečia visų NAUJŲ komandų VB.NET, bet mes turime kažkur sustabdyti šią nesąmonę.

05

nuo 08

4 vieta - procedūrų kvietimų pakeitimai

Į 4 vieta, mes turime Pokyčiai procedūrų skambučiuose!

Tai apdovanojimas „Gerumas, grynumas ir visavertė dorybė“, kuris reiškia daug sunkios kampanijos, kurią vykdo frakcija „daugiau nieko blogo“.

VB6 versijoje, jei procedūros parametro kintamasis yra būdingas tipas, tada jis yra ByRef, nebent jį užkodavote „ByVal“ aiškiai, bet jei jis nėra koduotas „ByRef“ ar „ByVal“ ir tai nėra būdingas kintamasis, tada jis yra „ByVal“... Supratau?

VB.NET, tai yra „ByVal“, nebent jis užkoduotas „ByRef“.

Beje, „ByVal VB.NET“ numatytoji reikšmė taip pat neleidžia netyčia pakartoti procedūrų parametrų kintamųjų pokyčių į skambučio kodą - pagrindinę gero OOP programavimo dalį.

„Microsoft“ taip pat „perkrauna“ VB.NET pakeisdama reikalavimus skliausteliuose procedūrinių skambučių metu.

VB6 skliausteliuose reikia nurodyti argumentus, kai skambinate su funkcijomis, bet ne tada, kai skambinate į antrinę programą, kai nenaudojate kvietimo pranešimo, bet jie būtini, kai naudojamas kvietimo pranešimas.

VB.NET skliausteliuose visada reikalaujama argumentų sąrašo, kuriame nėra nieko.

06

nuo 08

3 vieta - masyvai yra pagrįsti 0, o ne 1 pagrindu

Bronzos apdovanojimas - 3 vieta, eina į Masyvai yra pagrįsti 0, o ne 1 pagrindu!

Tai tik vienas sintaksės pakeitimas, tačiau šis pakeitimas įgauna „medalio pakylos“ statusą, nes už jį balsuojama „greičiausiai įsukant savo programos logiką“. Prisimeni, 3 vieta YRA „Apdovanojimas (2)“ mūsų sąraše. Jei savo VB6 programoje yra skaitikliai ir masyvai (o kiek jų nėra), tai jis jus atsiųs.

Dešimt metų žmonės klausė: „Ką„ Microsoft “rūkė, kai jie taip elgėsi?“ Ir jau dešimt metų programuotojai turi tarsi visuotinai ignoravo tai, kad buvo „myArray“ (0) elementas, kuris tiesiog užėmė vietą ir prie jo nepriprato nieko... Išskyrus tuos programuotojus, kurie DID tuo naudojasi, ir jų programos atrodė, aš turiu galvoje, tiesiog „keistai“.

I = nuo 1 iki 5
„MyArray“ (I - 1) = Nesvarbu
Kitas

Turiu omeny, TIKRAI! ...

07

nuo 08

2 vieta - įvairaus tipo duomenų tipas

Sidabro medalis 2 vieta eina pagerbti seną draugą, kuris buvo numestas į truputį programavimo kibiro, praleidus VB6! Aš kalbu ne apie ką kitą, kaip Variantų duomenų tipas.

Tikriausiai nė vienas kitas „Visual Basic“ „notNet“ bruožas geriau neatspindi „greito, pigaus ir laisvo“ filosofijos. Šis vaizdas rodė VB iki pat VB.NET įvedimo. Aš pakankamai senas, kad prisimenu „Microsoft“ pateiktą „Visual Basic 3.0“: „Oho, vau! Lookee čia! Naudojant naują, patobulintą „Variant“ duomenų tipą, nereikia deklaruoti kintamųjų ar nieko. Galite tiesiog galvoti ir juos užkoduoti.

„Microsoft“ gana greitai pakeitė jų melodiją ir rekomendavo kintamuosius deklaruoti naudodama a specifinį duomenų tipą beveik iš karto, todėl daugeliui iš mūsų kyla klausimas: „Jei negalite naudoti variantų, kodėl? turi juos? "

Bet, kol mes svarstome duomenų tipus, turėčiau paminėti, kad be „Variant“ įlašinimo į šlapią cementą, pasikeitė daugybė duomenų tipų. Yra naujas „Char“ duomenų tipas ir „Long“ duomenų tipas, kuris yra 64 bitai. Dešimtainis yra skirtingai. Trumpas ir sveikas skaičius nebėra vienodo ilgio.

Ir yra naujas duomenų objekto „Objektas“, kuris gali būti nieko. Ar girdėjau ką nors sakant „Varianto sūnus"?

08

nuo 08

1 vieta - VB.NET pagaliau visiškai orientuota į objektus

Pagaliau! Aukso medalis, 1 vieta, didžiausias apdovanojimas, kurį galiu įteikti, atitenka ...

TA DAH!

Pagaliau VB.NET yra visiškai orientuota į objektus!

Dabar, kai jūs einate į paplūdimį, „C ++“ programuotojai neišpūs smėlio į veidą ir pavogs jūsų (draugę / vaikiną - išsirinkite). Ir tu gali vis tiek koduokite visą „General Ledger Trial Balance“, kol jie bando išsiaiškinti, kuriuos antraštės failus įtraukti.

Pirmą kartą galite koduoti taip arti lusto, kiek jums reikia, ir pasiekti visas sistemos vidines dalis, kurių jūsų širdis geidžia be turėdamas kreiptis į tuos nemalonius „Win32“ API skambučius. Jūs turite paveldėjimą, funkcijų perkrovimą, asinchroninį daugybinį siūlą, šiukšlių rinkimą ir viskas yra objektas. Ar gali gyvenimas pagerėti?

Ar girdėjau ką nors sakant, kad „C ++“ paveldi daug kartų, o .NET vis dar nėra?

Sudegink eretiką!