Övning – Förstå metodomfång
for loopar, if-else instruktioner och metoder representerar alla olika typer av kodblock. Varje kodblock har sitt eget "omfång". "Omfång" är regionen för ett program där vissa data är tillgängliga. Variabler som deklareras i en metod, eller något kodblock, är endast tillgängliga i den regionen. När program blir mer komplicerade hjälper det här mönstret programmerare att konsekvent använda tydligt namngivna variabler och underhålla lättläst kod.
I den här övningen lär du dig mer om metodomfång genom att arbeta med olika typer av metoder och variabler.
Testa variabelomfång
Instruktioner som deklareras utanför något kodblock kallas för toppnivåinstruktioner. Variabler som deklareras i toppnivåinstruktioner kallas "globala variabler". Globala variabler är inte begränsade till något omfång och kan användas var som helst i programmet. Globala variabler kan vara användbara för olika metoder som behöver komma åt samma data. Det är dock viktigt att vara uppmärksam på variabelnamn i olika omfång.
Ta bort befintlig kod från föregående övningar i Visual Studio Code-redigeraren.
Ange följande kod i Visual Studio Code-redigeraren:
string[] students = {"Jenna", "Ayesha", "Carlos", "Viktor"}; DisplayStudents(students); DisplayStudents(new string[] {"Robert","Vanya"}); void DisplayStudents(string[] students) { foreach (string student in students) { Console.Write($"{student}, "); } Console.WriteLine(); }I den här koden skapar du en global
studentsmatris och en metodDisplayStudentssom accepterar en parameter med samma namn.Spara och kör koden för att observera följande utdata:
Jenna, Ayesha, Carlos, Viktor, Robert, Vanya,Observera att metodparametern
studenthar företräde framför den globalastudentmatrisen. Det är viktigt att vara medveten om vilka globala variabler du vill att dina metoder ska använda.Ta bort föregående kod.
Ange följande kod i redigeraren:
PrintCircleArea(12); void PrintCircleArea(int radius) { double pi = 3.14159; double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); }Den här koden beräknar och visar området för en cirkel.
Försök att referera till variablerna i
PrintCircleAreametoden genom att uppdatera koden på följande sätt:PrintCircleArea(12); double circumference = 2 * pi * radius;Felmeddelanden visas som informerar dig om att namnen
piochradiusinte finns i det aktuella omfånget. Dessa variabler finns bara inom metodomfångetPrintCircleArea.Ta bort den felaktiga koden och lägg till följande kod:
void PrintCircleCircumference(int radius) { double pi = 3.14159; double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Eftersom variabeln
piär inställd på samma fasta värde och används i båda metoderna är det här värdet en bra kandidat för en global variabel. I det här exempletradiusär inte en global variabel så att du kan anropa metoderna med olika värdenradiusutan att uppdatera en variabel varje gång.Uppdatera koden till följande:
double pi = 3.14159; void PrintCircleArea(int radius) { double area = pi * (radius * radius); Console.WriteLine($"Area = {area}"); } void PrintCircleCircumference(int radius) { double circumference = 2 * pi * radius; Console.WriteLine($"Circumference = {circumference}"); }Nu kan båda metoderna referera till samma värde
piutan att behöva definiera det. Du kanske redan har gissat att metoder kan anropa andra metoder. Så länge en metod definieras inom programmets omfång kan den i allmänhet anropas var som helst.Lägg till en ny metod i koden på följande sätt:
double pi = 3.14159; PrintCircleInfo(12); PrintCircleInfo(24); void PrintCircleInfo(int radius) { Console.WriteLine($"Circle with radius {radius}"); PrintCircleArea(radius); PrintCircleCircumference(radius); }I den här koden skapar du en ny metod
PrintCircleInfoför att anropa de befintliga metoderna. Värdetradiusvidarebefordras också till varje metod. Genom att skapa modulariserade metoder kan du hålla koden organiserad och lättläst.Spara och kör koden för att observera följande utdata:
Circle with radius 12 Area = 452.38896 Circumference = 75.39815999999999 Circle with radius 24 Area = 1809.55584 Circumference = 150.79631999999998
Sammanfattning
Här är vad du har lärt dig om metodomfång hittills:
- Variabler som deklareras i en metod är endast tillgängliga för den metoden.
- Variabler som deklareras i toppnivåinstruktioner är tillgängliga i hela programmet.
- Metoder har inte åtkomst till variabler som definierats inom olika metoder.
- Metoder kan anropa andra metoder.