Inleiding tot functies in C #

In C # is een functie een manier om code te verpakken die iets doet en vervolgens de waarde retourneert. Anders dan in C, C ++ en sommige andere talen, functies bestaan ​​niet op zichzelf. Ze maken deel uit van een objectgericht benadering van programmeren.

Een programma voor het beheren van spreadsheets kan bijvoorbeeld een functie sum () bevatten als onderdeel van een object.

In C # kan een functie een ledenfunctie worden genoemd - het is een lid van een klasse - maar die terminologie blijft over van C ++. De gebruikelijke naam ervoor is een methode.

De instantiemethode

Er zijn twee soorten methoden: instantiemethode en statische methode. Deze inleiding behandelt de instantiemethode.

Het onderstaande voorbeeld definieert een eenvoudige klasse en noemt deze Test. Dit voorbeeld is een eenvoudig consoleprogramma, dus dit is toegestaan. Meestal moet de eerste klasse die is gedefinieerd in het C # -bestand de formulierklasse zijn.

Het is mogelijk om een ​​lege klas als deze te hebben klassetest {}

instagram viewer
, maar het is niet nuttig. Hoewel het er leeg uitziet, erft het - zoals alle C # -klassen - van het object dat het bevat en bevat het een standaard constructeur in het hoofdprogramma.

var t = nieuwe test ();

Deze code werkt, maar doet niets wanneer het wordt uitgevoerd, behalve het maken van een exemplaar t van de lege testklasse. De onderstaande code voegt een functie toe, een methode die het woord 'Hallo' uitvoert.

systeem gebruiken;
naamruimte funcex1
{
klasse Test
{
openbare leegte SayHello ()
{
Troosten. WriteLine ("Hallo");
}
}
klasse programma
{
statische leegte Main (string [] args)
{
var t = nieuwe test ();
t. Zeg hallo() ;
Troosten. ReadKey ();
}
}
}

Dit codevoorbeeld bevat Troosten. ReadKey (), dus wanneer het wordt uitgevoerd, wordt het consolevenster weergegeven en wacht het op een sleutelinvoer zoals Enter, Space of Return (niet de shift-, Alt- of Ctrl-toetsen). Zonder dit zou het consolevenster worden geopend, "Hallo" worden uitgevoerd en vervolgens in een oogwenk worden gesloten.

De functie Zeg hallo is ongeveer een zo eenvoudig mogelijke functie. Het is een openbare functie, wat betekent dat de functie zichtbaar is van buiten de klas.

Als je het woord verwijdert openbaar en probeer het compileren de code mislukt met een compilatiefout "funcex1.test. SayHello () 'is ontoegankelijk vanwege het beschermingsniveau. "Als je het woord" privé "toevoegt waar het woord openbaar was en opnieuw compileert, krijg je dezelfde compileerfout. Verander het gewoon terug naar "openbaar".

Het woord nietig in de functie betekent dat de functie geen waarden retourneert.

Typische kenmerken van functiedefinitie

  • Toegangsniveau: openbaar, privé en enkele anderen
  • Retourwaarde>: ongeldig of elk type zoals int
  • Methodenaam: SayHello
  • Alle methodeparameters: voorlopig geen. Deze worden gedefinieerd tussen haakjes () achter de naam van de methode

De code voor de definitie van een andere functie, MyAge (), is:

openbare int MyAge ()
{
terugkeer 53;
}

Voeg dat direct na de Zeg hallo() methode in het eerste voorbeeld en voeg deze twee regels eerder toe Troosten. ReadKey ().

var leeftijd = t. Mijn leeftijd();
Troosten. WriteLine ("David is {0} jaar oud", leeftijd);

Als u het programma uitvoert, wordt dit nu uitgevoerd:

Hallo
David is 53 jaar oud,

De var leeftijd = t. Mijn leeftijd(); aanroep van de methode retourneerde de waarde 53. Het is niet de handigste functie. Een handiger voorbeeld is de spreadsheet Sum-functie met een array van ints, de startindex en het aantal op te tellen waarden.

Dit is de functie:

public float Sum (int [] waarden, int startindex, int eindindex)
{
var totaal = 0;
voor (var index = startindex; index <= endindex; index ++)
{
totaal + = waarden [index];
}
totaal teruggeven;
}

Hier zijn drie use-cases. Dit is de code om Main () toe te voegen en aan te roepen om de Sum-functie te testen.

var waarden = nieuwe int [10] {1, 2, 3, 4, 5, 6, 7, 8, 9,10};
Troosten. WriteLine (t. Som (waarden, 0,2)); // Moet 6 zijn
Troosten. WriteLine (t. Som (waarden, 0,9)); // moet 55 zijn
Troosten. WriteLine (t. Som (waarden, 9,9)); // moet 10 zijn, omdat de 9e waarde 10 is

De voor lus telt de waarden in het bereik startindex op tot eindindex, dus voor startindex = 0 en endindex = 2 is dit de som van 1 + 2 + 3 = 6. Terwijl voor 9,9 alleen de ene waarden [9] = 10 worden opgeteld.

Binnen de functie wordt het lokale variabele totaal geïnitialiseerd op 0 en worden vervolgens de relevante delen van de matrixwaarden toegevoegd.

instagram story viewer