C# tagfüggvények
Tagfüggvény Osztályban definiált függvény C#-ban nem definiálhatunk globális függvényt! Formája: [attribútum] [módosítók] visszatérési_érték fvnév([paraméterszignatúra]){ } Egy módosító csak egyszer szerepelhet. Kölcsönösen kizárják egymást: static, virtual, override Kölcsönösen kizárják egymást: new, override Krizsán Zoltán, iit C# osztályok 2
Tagfüggvény változó hosszúságú paraméterlista class OpenEnded{ public void Foo( params object[] pp ){ for (int i = 0 ; i < pp.GetLength(0) ; i++){ Console.WriteLine(pp[i]); } } class TestVarArgs{ static void Main(string[] args){ OpenEnded oe = new OpenEnded(); oe.Foo( 123, 456, "Hello", new Point(7,8), 9.0m, true, 'X‘); Krizsán Zoltán, iit C# osztályok 3
Tagfüggvény paraméter átadás módjai void ertekSzerint(int a) beállított értéket kap void referenciaSzerint(ref int a) hívásnál is kell a ref kulcsszó, kötelező inicializálni void kimenetiRefSzerint(out int a) hívásnál is kell az out kulcsszó, kötelező a fv. törzsben beállítani Krizsán Zoltán, iit C# osztályok 4
Tagfüggvény Main fv. alakjai public static void Main() {...} public static void Main(string[] args) {...} public static int Main() {...} public static int Main(string[] args) {...} Paramétere a parancssori argumentumokat tartalmazza. Krizsán Zoltán, iit C# osztályok 5
Tagfüggvény Virtuális fv. Alapból nem virtuális (nem úgy, mint JAVA) virtual kulcsszó segítségével lesz csak az. Ha egy fv. virtuális, akkor kötelező definiálni a törzsét (nincs pure virtual) Felülírása az override minősítővel a leszármazott osztályok valamelyikében Teljes azonosság kötelező. Krizsán Zoltán, iit C# osztályok 6
Konstruktor Neve: osztálynév Nem lehet meghívni explicite, de meghívódik miután a rendszer létrehozta az objektumot. Default konstruktor létrejön, ha nem definiálunk (paraméter nélküli). Ha nincs konstruktor itt is létrejön egy, és ez 0, false, null-ra állítja az adattagokat. Krizsán Zoltán, iit C# osztályok 7
Konstruktor II Feladata az objektum inicializálása „konstruálás”. Több is lehet, de paraméterei mások Hívható másik konstruktor, akár az ősosztályé is, de a formája a következő: public Employee(int weeklySalary, int numberOfWeeks) : this(weeklySalary) { } public Employee(int weeklySalary, int numberOfWeeks) : base(weeklySalary) { }
Konstruktor fajtái Példány Privát Statikus Egy objektum inicializálására használjuk Privát Objektum létrehozását tiltjuk meg vele. Statikus Az osztály első betöltődésekor fut le vagy amikor a statikus mezőre először hivatkozunk. Feladata a csak olvasható vagy statikus mezők beállítása. Nem lehet paramétere.
Konstruktor IV privát konstruktor Olyan osztályoknak kell, amelyeket nem szabad példányosítani. Azaz, ha csak statikus részük van. Vigyázzunk, ha nem adunk meg hozzáférést, akkor az privát lesz. A Math osztálynak is privát van.
Destruktor Neve: ~osztálynév Csak 1 darab lehet. Ami finalize-re konvertálódik. Nem öröklődik, Nem lehet felüldefiniálni. Nem lehet meghívni explicite, de meghívódik amikor a gc felszabadítja, kisöpri az objektumot. Krizsán Zoltán, iit C# osztályok 11
Destruktor II Nem lehet sem paramétere Nem lehet módosítója. Feladata az utóhatások megszüntetése. (értesítés, nyugtázás, …). Stuktúrának nem lehet.