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
-
Írj egy Square függvényt, ami visszaadja egy egész szám négyzetét!
-
Írj függvényt, ami egy egész számokat tartalmazó tömb legkisebb elemét adja vissza!
-
Írj metódust, ami egy szöveget kap paraméterként, és kiírja, hány karakterből áll!