Obiecte variabile
Luați în considerare fragmentul următor:
El declară și creează două variabile: lucru și o caracteristică. Prima variabilă conține o referință la tipul de obiect, iar cea de-a doua conține o referință la o instanță a clasei aleatoare. Următoarea comandă este acceptabilă chiar și în modul de verificare de tip greu (Option Strict On), deoarece în VB.NET toate variabilele sunt în cele din urmă obiecte:
Pe de altă parte, atribuirea inversă (aRandomlnstance = lucru) nu este validă, deoarece nu fiecare obiect este o instanță a clasei aleatoare.
remarcă
Așa cum se va arăta în următorul capitol, strămoșul comun al tuturor tipurilor de VB.NET este tipul de obiect. De aceea, în VB.NET orice valoare poate fi stocată într-o variabilă de tip Object, iar orice obiect creat suporta metode de clasă Object. De exemplu, deoarece metoda ToString este definită în clasa Object. fiecare clasă vă permite să obțineți o reprezentare de șir a obiectului (a cărui utilitate depinde de implementare). Metoda ToString este apelată automat atunci când se utilizează constructe din formularul Console.WriteLine (foo).
Dacă variabila obiect conține un manipulator de bloc de memorie, ca urmare a operației de atribuire, a doua variabilă de obiect va fi atribuită un manipulator al aceluiași bloc de memorie. Dar dacă uitați că două variabile diferite sunt folosite pentru a lucra cu un bloc de memorie, acest lucru poate duce la consecințe triste - modificările în starea unui obiect făcut printr-o variabilă vor afecta automat o altă variabilă. De exemplu, luați în considerare următorul fragment:
Setul dinamic A va conține, de asemenea, șirul de coarde. astfel încât rezultatul A.Count va fi 1.
remarcă
Dacă sunteți familiarizați cu limbile în care pointerii sunt utilizați pe scară largă (de exemplu, C sau Pascal), veți vedea că variabilele obiectului au multe în comun cu indicatorii. Principala diferență este că dereferențarea variabilelor obiectului are loc automat și că operațiunile matematice nu pot fi executate.
Deoarece șirurile și matricele sunt obiecte în VB.NET, rețineți că variabilele de obiect sunt folosite pentru a lucra cu ele. După cum se arată în Capitolul 3, acest lucru vă permite să utilizați capabilitățile încorporate ale clasei corespunzătoare folosind sintaxa ".". De exemplu, atunci când lucrați cu o matrice printr-o variabilă de array, comanda anArray.Sort () sortează matricele cu o metodă rapidă de sortare extrem de eficientă.
remarcă
Din păcate, pentru tot ce trebuie să plătiți. Transferul variabilelor de obiecte în funcție de valoare este asociat cu anumite dificultăți, care se extind acum la obiecte standard cum ar fi matrice. Acest subiect este discutat în. secțiunea "Probleme cu transferul variabilelor de obiecte în funcție de valoare" din acest capitol.
Ca și în versiunile anterioare ale VB, variabilele de obiect pot fi folosite pentru a obține o înregistrare mai compactă. De exemplu, următorul fragment definește numele scurt aBox, care va fi utilizat în locul MuForm.TextBoxl lung:
Abrevieri similare sunt adesea folosite în legătură cu Cu cuvântul cheie: