Static och This

Inledning

I denna artikel tar vi en snabbt titt på betydelsen av de reserverade orden static och this.

Dags att söka TE4!

Ansökningen är igång!
25 april till 15 maj!
ansök via skanegy.se

Öppet hus/info-möte den 8:e maj kl. 17-18 hos NTI Lund, Sankt Lars park!

Är du intresserad av programmering, t.ex. spelutveckling, appar eller webbserverprogrammering?
Går du på Teknikprogrammet på gymnasiet och läser Programmering 1? (eller har gått och är max 22 år)

Till höst startar jag ett nytt 4:e tekniskt år tillsammans med NTI i Lund för dig som vill bli Gymnasieingenjör. Målet är att du efter 4:e året kommer ut i arbete inom mjukvaruutveckling!

/MVH
Jonas Nilsson
skapare csharpskolan.se

Innebörden av static

Nu när vi har kommit såhär långt så kan vi börja diskutera innebörden av det reserverade ordet static igen. Som ni säkert märkt så står detta i deklaration av medlemsvariabler och medlemsfunktioner. Den kanske mest kända vid det här laget är static void Main(string[] args) när ni gör Console Applications.

Kort kan man säga att statiska medlemmar (attribut och metoder) kan användas utan att först skapa ett objekt. Man kan också se det som att klassen delar på alla statiska resurser sinsemellan. Så statiska medlemmar är gemensamma för alla objekt av samma klass. Se exempel:

Observera att vi måste använda klassens namn när vi vill komma åt de statiska medlemmarna. Funktionen DoSometing() och variabeln i går alltså att använda trots att vi inte skapat något objekt av klassen myClass. Känns detta bekant? Vi kan jämföra med t ex Console.ReadLine() och Console.WriteLine() som båda är statiska metoder i klassen Console.

This

Betrakta följande exempel:

Ovanstående klass har samma variabelnamn på sina medlemsvariabler som konstruktorn för klassen har på sina inparametrar. Går detta verkligen?

Svaret är ja! Vi behöver dock någon logik för att skilja dem åt.

Som du borde veta vid det här laget så kan parametrarna i metoder jämställas vid lokala variabler inom metoden. Genom att använda samma namn på lokala variabler/inparametrar i medlemsmetoden så "döljer" man medlemsvariabler inom klassen som råkar heta samma. Lösningen är att använda nyckelordet this som alltid refererar till objektet självt och vi kommer då åt medlemsvariablerna utan namnkonflikter med de lokala variablerna.

Ett tips är att använda ordet this i så stor utsträckning som möjligt för att göra koden mer lättläst. Det syns då genast när en medlemsvariabel används och när en lokal variabel används.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Scroll to top