fredag, august 10, 2007

Metoder: Hvad kan de bruges til og hvordan fungerer de?

En stor del af at arbejde med C# omhandler en del brug af metoder til at udføre forskellige ting.
metoder kan være lidt svære at forstå i starten, men når først man har fundet ud af hvordan de virker, kan de ikke undværes. Specielt fordi de hører til det mest basis programmering i C# og .NET i det hele taget. Jeg har taget et lille kig på nogle simple metoder og vil forsøge at forklare lidt om hvad de forskellige ord/keywords betyder og hvorfor man bruger dem.

En basis metode:

Hvis vi starter ud med at lave en basis metode, så vil jeg derefter forsøge at pille den fra hinanden og forklare delene af den.





Public Void MetodeNavn()

{

//Her skal skrives en masse kode

}






Det er er det helt basale for en metode. Public indikerer at du kan tilgå metoden udefra. Jeg kunne have brugt Private istedet hvilket vil have indikeret en privat metode som ikke kan tilgås fra f.eks. et andet dokument.

Void: betyder faktisk tomt, eller tomrum, men i dette tilfælde bruger man Void når man laver en metode der ikke smider noget data tilbage til dig når den er færdig. Hvis den nu skulle have smidt f.eks. et navn tilbage ville man have brugt String istedet.

Metodenavn: Her kan du navngive hvad du vil kalde din metode. Det mest smarte ville selvfølgelig være hvis du navngav den noget der giver mening. F.eks. "FindNameFromDB". At kalde den Kaffekop vil måske være kanon sort humor, men det sjove holder op når du har 50 metoder der hedder alt fra chokoladetærte til fjernsynsflimmer og du skal finde ud af, hvilken metode der henter navne fra databasen. så skal du sidde og nærstudere din kode hvilket nok er knapt så sjovt.

Tuborgklammerne indrammer selve den kode der er i metoden. Lad os prøve at udvide metoden en lille tand.





Public Void MetodeNavn(int nummer1, int nummer2)

{

int resultat = nummer1 + nummer2;

return resultat;

}





Her har vi udvidet metoden så den tager 2 parameter. Begge parameter er int. Jeg skal nok forklare lidt senere hvordan man sender de 2 parameter til metoden.

Inde imellem tuborgklammerne har jeg lavet en simpel beregning der ligger de 2 numre sammen og smider den i en variabel der hedder resultat. Jeg bruger derefter kommandoen "return" for at sende resultatet tilbage til det sted hvor der blev bedt om det.
Jeg kunne have forkortet det lidt og bare skrevet "return nummer1 + nummer2;"
Det havde virket ligeså fint og faktisk sparet en bid hukommelse fordi at vi sparede oprettelsen af en variabel.

Lad os nu sige vi har smidt vores fine metode ind i en klasse som f.eks. vores tidligere Is.cs(se tidligere blogpost) kan vi kalde metoden fra et hvilket som helst sted, når vores instans af variablen er oprettet med: "MitIsKlasseInstansNavn.MetodeNavn (20, 30);".

Her indikerer vi at vi vi vil have fat i den metode der hedder MetodeNavn som ligger i den klasse som vores MitIsKlasseNavn er oprettet i(Is MitIsKlasseNavn = New Is).
Samtidig med vi kalder metoden smider vi 2 parameter med. Disse parameter ryger ind som nummer1 og nummer2 i vores metode og bliver lagt sammen, så vi i sidste ende for nummeret 50 tilbage..

Så hvis vi f.eks. skriver



Int PlusBeregning = MitIsKlasseInstansNavn.MetodeNavn (20, 30);

console.writeline(PlusBeregning); //Skriver tallet 50 ud på skærmen




Metode Overloading

Den sidste ting jeg vil kigge på inden jeg slutter af er Metode Overloading.
Lad os nu sige at du har en metode til at hive et produkt ud af en database men du er ikke sikker på om brugeren vil bruge produktets ID eller produktets navn når de skal hive produktet frem. For at komme over det problem kan man bruge Metode Overloading, hvilket faktisk bare er at oprette flere metoder med det samme navn, men som tager forskellige parameter.



Public void MetodeNavn(int ProduktID)

{

//kode der henter produktet ud fra dets ID

}

Public void MetodeNavn(String ProduktNavn)

{

//Kode der henter produktet ud fra dets Navn

}




Læg mærke til at begge metoder har nøjagtig samme navn. Men hvis du kalder metoden med en string er .Net så smart at den automatisk finder den rette metode som bruger en string som parameter, og det samme er selvfølgelig gældende med int.

Husk at du ikke må lave 2 metoder som hedder det samme og tager samme antal og slags parameter, men man kan sagtens lave 2 metoder som hedder det samme, som begge tager int, men som tager forskelligt antal. F.eks. hvis den ene tager 1 parameter, og den anden tager 2.

Afslutning

Så fik vi også gennemgået lidt om metoder. Husk på, at dette er noget jeg selv lige har læst og lært og derfor kan jeg ikke helt garantere at der ikke er fejl i min kode, eller at der er noget som jeg har misforstået, men i må MEGET gerne skrive kommentarer til det og gerne rettelser til det så jeg evt, kan lære af mine fejl. Min basis mening med disse blogs er som hjælp til mig selv til at huske hvad jeg har læst og til andre som måske har brug for en anden måde at få forklaret tingene på.

Held og lykke med kodningen :-)

Ingen kommentarer: