Exercițiul - Blocuri de cod și domeniu variabil
- 11 minute
Un bloc de cod este una sau mai multe instrucțiuni C# care definesc o cale de execuție. Instrucțiunile din afara unui bloc de cod afectează momentul, dacă și cât de des este executat acel bloc de cod la momentul rulării. Limitele unui bloc de cod sunt definite de obicei de acolade, {}.
În plus față de efectul lor asupra căii de execuție, blocurile de cod pot afecta și domeniul variabilelor dvs. Eșantioanele de cod pe care le examinați în timpul acestui exercițiu vă vor ajuta să înțelegeți relația dintre blocurile de cod și domeniul variabilei.
Blocurile de cod afectează domeniul unei declarații de variabile
Domeniul variabilei se referă la vizibilitatea unei variabile la celălalt cod din aplicație. O variabilă cu domeniu local este accesibilă numai în interiorul blocului de cod în care este definită. Dacă încercați să accesați variabila în afara blocului de cod, veți primi o eroare de compilator.
Restul acestei unități explorează relația dintre blocurile de cod și domeniul variabilei.
Pregătește-ți mediul de codare
Acest modul include activități practice care vă ghidează în procesul de creare și de rulare a codului demonstrativ. Sunteți încurajat să finalizați aceste activități utilizând Visual Studio Code ca mediu de dezvoltare. Utilizarea Codului Visual Studio pentru aceste activități vă va ajuta să deveniți mai confortabil să scrieți și să rulați cod într-un mediu de dezvoltator utilizat de profesioniști din întreaga lume.
Deschideți Visual Studio Code.
Puteți utiliza meniul Start Windows (sau resursa echivalentă pentru un alt sistem de operare) pentru a deschide Visual Studio Code.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder, navigați la folderul Desktop Windows.
Dacă aveți o altă locație de folder în care păstrați proiectele de cod, puteți utiliza acea locație de folder în schimb. Pentru această instruire, lucrul important este să aveți o locație ușor de găsit și de reținut.
În caseta de dialog Deschidere folder, selectați Selectare folder.
Dacă vedeți o casetă de dialog de securitate care vă întreabă dacă aveți încredere în autori, selectați Da.
În meniul Terminal Visual Studio Code, selectați Terminal nou .
Observați că o linie de comandă din panoul Terminal afișează calea folderului pentru folderul curent. De exemplu:
C:\Users\someuser\Desktop>Notă
Dacă lucrați pe propriul PC, nu într-un sandbox sau într-un mediu găzduit și ați finalizat alte module Microsoft Learn din această serie C#, este posibil să fi creat deja un folder de proiect pentru eșantioane de cod. În acest caz, puteți trece peste pasul următor, care este utilizat pentru a crea o aplicație consolă în folderul TestProject.
În linia de comandă Terminal, pentru a crea o aplicație consolă nouă într-un folder specificat, introduceți următoarea solicitare:
dotnet new console -o ./CsharpProjects/TestProjectAceastă comandă .NET CLI utilizează un șablon de program .NET pentru a crea un nou proiect de aplicație consolă C# în locația de folder specificată. Comanda creează folderele CsharpProjects și TestProject pentru dvs. și utilizează TestProject ca nume al fișierului
.csproj.Dacă se afișează un mesaj care vă spune că fișierele există deja, continuați cu pașii următori. Veți reutiliza fișierele de proiect existente.
În vizualizarea EXPLORER, extindeți folderul CsharpProjects .
Ar trebui să vedeți folderul TestProject și două fișiere, un fișier program C# denumit Program.cs și un fișier de proiect C# numit TestProject.csproj.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder , selectați folderul CsharpProjects , apoi selectați Selectare folder.
În vizualizarea EXPLORER, extindeți folderul TestProject, apoi selectați Program.cs.
Ștergeți liniile de cod existente.
Veți utiliza acest proiect de consolă C# pentru a crea, a construi și a rula eșantioane de cod în timpul acestui modul.
Închideți panoul Terminal.
Crearea unei variabile în interiorul unui bloc de cod
Veți începe consultând cazul atunci când o variabilă este inițializată într-un bloc de cod.
Asigurați-vă că aveți visual Studio Code deschis și Program.cs afișat în panoul Editor.
Notă
Program.cs ar trebui să fie goală. Dacă nu este, selectați și ștergeți toate liniile de cod.
Tastați următorul cod în Visual Studio Code Editor:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); }În meniul Fișier Visual Studio Code, selectați Salvare.
Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.
Se va deschide un panou terminal. Terminalul ar trebui să includă o linie de comandă care arată că Terminal este deschis în locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Notă
Dacă vedeți un mesaj care spune "Nu s-a găsit un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ar trebui să vedeți următoarea ieșire:
Inside the code block: 10
Acesta este rezultatul așteptat. Dar ce se întâmplă dacă doriți să accesați variabila value în afara blocului de cod de if instrucțiune?
Încercarea de a accesa o variabilă în afara blocului de cod în care este declarată
În Visual Studio Code Editor, creați o linie de cod nouă sub blocul codului de
ifinstrucțiune.În linia de cod necompletată pe care ați creat-o, adăugați următoarea linie de cod:
Console.WriteLine($"Outside the code block: {value}");Verificați dacă codul actualizat arată astfel:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); } Console.WriteLine($"Outside the code block: {value}");Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.
Introduceți
dotnet rundin linia de comandă Terminal pentru a rula codul.Observați că, atunci când încercați să rulați aplicația, primiți o eroare de compilare:
Program.cs(7,46): error CS0103: The name 'value' does not exist in the current context
Porțiunea Program.cs(7,46) mesajului vă spune că eroarea este asociată cu linia 7 din fișierul Program.cs, coloana 46.
Această eroare este generată deoarece o variabilă declarată în interiorul unui bloc de cod este accesibilă (poate fi văzută doar) în acel bloc de cod. Deoarece o variabilă nu poate fi accesată în afara blocului de cod în care este declarată, value nu se poate accesa de la linia 7 a codului.
O variabilă declarată într-un bloc de cod metodă este denumită variabilă locală. Este posibil să vedeți termenul variabilă locală utilizată atunci când revizuiți articole care prezintă domeniul variabilei.
Mută declarația variabilei deasupra blocului de cod
Pentru a accesa o variabilă atât în interiorul, cât și în afara unui bloc de cod, va trebui să declarați variabila înainte de (mai sus) blocul de cod, astfel încât codul din afara blocului de cod să poată "vedea" variabila.
Actualizați codul în Visual Studio Code Editor după cum urmează:
bool flag = true; int value; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Faceți un minut pentru a revizui actualizările.
Observați că
valueacum este declarat (dar neinițializat) în afara blocului deifcod.Utilizați Visual Studio Code pentru a salva actualizările, apoi rulați codul.
Observați că încă primiți o eroare de compilare.
De data aceasta, atunci când încercați să rulați aplicația, primiți următoarea eroare de compilare:
Program.cs(6,49): error CS0165: Use of unassigned local variable 'value'Eroarea este asociată cu linia 6 din interiorul blocului de cod, deoarece
valueeste neinițializată (nu a fost atribuită o valoare). Dacă liniavalue = 10;de cod a fost amplasată deasupra blocului deifcod de instrucțiune, aplicația ar compila corect și totul ar fi în regulă. Cu toate acestea, deoarecevaluenu a fost inițializat, acesta nu poate fi accesat în interiorul blocului de cod.Asigurați-vă că variabilele sunt inițializate înainte de a încerca să le accesați, se va rezolva această problemă.
Inițializarea unei variabile ca parte a declarației variabilei
Pentru a inițializa
valueca parte a declarației variabilei, actualizați codul după cum urmează:bool flag = true; int value = 0; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Acest cod tratează eroarea de compilare "variabilă locală neatribuită", inițializând
valueca parte a declarației variabilei.Utilizați Visual Studio Code pentru a salva și a rula codul.
Observați că acum, atunci când rulați aplicația, vedeți următoarea ieșire:
Inside the code block: 0 Outside the code block: 10
Examinați interpretarea codului de compilator
Pentru a vă ajuta să evitați erorile la momentul rulării, compilatorul C# analizează codul în Visual Studio Code Editor și în timpul procesului de compilare. Cu toate acestea, este posibil ca compilatorul să nu interpreteze întotdeauna codul la fel cum procedați.
Luați în considerare următoarele două exemple de cod care par să servească aceluiași scop:
// Code sample 1
bool flag = true;
int value;
if (flag)
{
value = 10;
Console.WriteLine($"Inside the code block: {value}");
}
Console.WriteLine($"Outside the code block: {value}");
// Code sample 2
int value;
if (true)
{
value = 10;
Console.WriteLine($"Inside the code block: {value}");
}
Console.WriteLine($"Outside the code block: {value}");
Este posibil să considerați că aceste două eșantioane ar trebui să producă întotdeauna același rezultat, dar compilatorul C# interpretează aceste două eșantioane de cod în mod diferit.
Pentru primul exemplu de cod, compilatorul interpretează flag ca o variabilă booleană care ar putea fi atribuită unei valori sau truefalse. Compilatorul concluzionează că, dacă flag este false, value nu va fi inițializat atunci când se execută a doua Console.WriteLine() . În esență, compilatorul consideră că sunt posibile următoarele două căi de executare a codului:
// path when flag = true
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
ȘI
// path when flag = false
int value;
Console.WriteLine($"Outside the code block: {value}");
Deoarece compilatorul consideră a doua cale o posibilitate (pentru codul eșantion 1), generează un mesaj de eroare în timpul procesului de compilare. În plus, Editorul de cod din Visual Studio Code vă avertizează cu privire la această problemă afișând o linie roșie ondulată sub value (sub blocul de cod).
Pentru al doilea eșantion de cod, conformantul concluzionează că conținutul blocului if de cod de instrucțiune va fi executat întotdeauna (true este întotdeauna true). Compilatorul nu generează o eroare de compilare, deoarece interpretează al doilea eșantion de cod pentru a avea o singură cale de execuție după cum urmează:
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
Recapitula
Iată câteva lucruri importante de reținut despre blocurile de cod:
- Atunci când declarați o variabilă în interiorul unui bloc de cod, vizibilitatea sa este locală la acel bloc de cod și acea variabilă nu poate fi accesată în afara blocului de cod.
- Pentru a vă asigura că o variabilă este vizibilă atât în interiorul, cât și în afara unui bloc de cod, trebuie să declarați variabila înainte de blocul de cod (în afara și deasupra blocului de cod).
- Asigurați-vă că variabilele sunt inițializate înainte ca codul dvs. să le acceseze (pentru toate căile potențiale de executare a codului).
Verificați-vă cunoștințele
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?