Ugrás a fő tartalomhoz

C# metódusok (eljárások és függvények)

Mi az a metódus?

A metódus egy névvel ellátott kódrészlet, amely meghatározott műveletet végez. Segítségével elkerülhetjük a kódismétlést, és könnyebben olvasható, karbantartható programokat írhatunk.

Egy metódust a neve, paraméterei és visszatérési értéke határozza meg, hogyan hívható meg.

class Program
{
static void Greet()
{
Console.WriteLine("Helló, üdv a programban!");
}

static void Main(string[] args)
{
Greet(); // metódus meghívása
}
}

Eljárások és függvények közti különbség

  • Eljárás: nem ad vissza értéket, csak végrehajt egy műveletet. (void)

  • Függvény: visszatér egy értékkel (pl. számítást végez és eredményt ad).

class Program
{
// Eljárás (nem tér vissza semmivel)
static void SayHello(string name)
{
Console.WriteLine($"Szia, {name}!");
}

// Függvény (visszatér egy értékkel)
static int Add(int a, int b)
{
return a + b; // return kulcsszó után adjuk meg, a visszaadni kivánt értéket
}

static void Main(string[] args)
{
SayHello("Anna");
int sum = Add(5, 7);
Console.WriteLine(sum); // 12
}
}

Paraméterek típusai

Érték szerinti

Alapértelmezetten a C# érték szerint adja át a paramétereket — azaz a metódus a paraméter másolatával dolgozik, és az eredeti változó nem módosul.

class Program
{
static void Increase(int x)
{
x += 10;
}

static void Main()
{
int num = 5;
Increase(num);
Console.WriteLine(num); // továbbra is 5
}
}

Átmenő (ref) paraméter

Ha azt szeretnénk, hogy a metódus ténylegesen módosítsa a változót, használhatjuk a ref kulcsszót. Ekkor a paraméter hivatkozással kerül átadásra.

class Program
{
static void IncreaseRef(ref int x)
{
x += 10;
}

static void Main()
{
int num = 5;
IncreaseRef(ref num);
Console.WriteLine(num); // 15
}
}

Kimenő (out) paraméter

Az out kulcsszóval egy metódus visszaadhat több értéket is, vagy számítást végezhet, ami „kimeneti paraméterben” adja vissza az eredményt.

class Program
{
static void Divide(int a, int b, out int hanyados, out int maradek)
{
hanyados = a / b;
maradek = a % b;
}

static void Main()
{
int q;
int r;
Divide(10, 3, out q, out r);
Console.WriteLine($"Hányados: {q}, maradék: {r}");
}
}

Visszatérési érték és return

A függvény mindig a return kulcsszóval adja vissza az eredményt. Ha a függvény típusa void, akkor return csak a kilépésre használható.

class Program
{
static int Square(int x)
{
return x * x;
}

static void Main()
{
int result = Square(5);
Console.WriteLine(result);
}
}

Metódus túlterhelés (overloading)

Több azonos nevű metódust is létrehozhatunk, ha eltér a paramétereik típusa vagy száma. Ezt nevezzük metódus túlterhelésnek.

class Program
{
static void Print(string text)
{
Console.WriteLine(text);
}

static void Print(int number)
{
Console.WriteLine($"Szám: {number}");
}

static void Main()
{
Print("Helló!");
Print(42);
}
}

Feladatok

  1. Írj egy Square függvényt, ami visszaadja egy egész szám négyzetét!

  2. Írj függvényt, ami egy egész számokat tartalmazó tömb legkisebb elemét adja vissza!

  3. Írj metódust, ami egy szöveget kap paraméterként, és kiírja, hány karakterből áll!