szuchi.hu

Szuchi Dániel Blogja

5. Érték és referencia típusú változók

Érték és referencia típusú változók:

Érték típusú változók:

  • Konkrét értéket tárolnak
  • Az a=b értékadáskor a b értéke átmásolódik a-ba
  • Egész, való, logikai, karakter, felsorolás, struktúra típusok

Referencia típusú változók:

  • Csak egy memória helyre tárolnak hivatkozást, ahol konkrét érték van
  • Az a=b értékadáskor a memóriabeli cím másolódik. a és b ugyanarra a memóriacímen levő értékre fog hivatkozni
  • Tömb, osztály, interfész, delegált, esemény típusok

 

A képi illusztrációt nem teszem be a kidolgozott anyagba, az megtalálható a jegyzetben, akinek nem egyértelmű!

 

Metódusok paramétereinek érték és referencia szerinti átadása:

Metódusok:

  • A metódus egy kódblokk, ami utasítások sorozatát tartalmazza
  • A program a metódust meghíváskor futtatja és ekkor megszabja a szükséges paramétereket.
  • C#-ban minden futtatandó utasítás metódusban helyezkedik el
  • A többször használt kódrészletet metódusba írjuk. Hosszú metódus esetén érdemes azt feldarabolni több kisebb metódusra az átláthatóság miatt.

 

Szintaktika: visszatérési_típus metódusnév(paraméterek){metódustörzs}

Metódusok típusai:

  • A típus a visszaadott érték típusa vagy void, ha nem adunk vissza semmit
  • Egy metódus maximum egy visszatérési értéket adhat, de ez lehet tömb is!
  • A visszatérési érték típus előtt állhatnak különféle módosítók: static, abstract, override, new illetve láthatóságot jelző kulcsszavak.

 

Metódustörzs:

  • A metódusban lévő utasítások használhatják a metódusnak átadott paramétereket
  • A visszatérési értéket a return kulcsszó után adjuk meg! FIGYELEM! Ennek hatására a program azonnal visszatér a híváshoz, akkor is ha van még utasítás a return után!
  • A metódus több ágon is véget érhet, ilyenkor minden ág végére kell a return!
  • A visszatérési érték nélküli (void) metódusnál a program mindig a metódus fizikai végénél tér vissza, a return elhagyható!

 

Változók hatóköre:

  • Az egyik blokkban deklarált változó csak a deklarálástól kezdve a blokk végéig érvényes! Következmény: az egyik metódusban deklarált x változó nem ugyan az mint a másikban deklarált x változó!
  • A hívó környezet változói nem használhatók a metódusban, ezért szükséges a paraméterátadás és a visszatérési érték! A globális változók használhatóak, de nem ajánlott a használatuk.

 

Paraméterek átadása:

Metódusok paraméterei:

  • A paramétereknél meg kell adni a típust és a nevet amivel a metódusban hivatkozunk rá
  • A paraméter átadásnak két módja van: az érték szerinti és a cím szerinti
  • Érték szerinti: a paraméterben átadott változóról másolat készül a metódusban, így ha a metódusban a változó  értéket cserél, az nincsen kihatással az eredeti változóra, tehát a hívó környezetben nem érvényesül a módosítás.
  • Cím szerinti: egy referenciát adunk át, tehát ha a metódusban értéket cserél a változó, akkor az a hívó környezetben is megváltozik.
  • Az érték szerinti átadás az alapértelmezett. (Ha referencia változót adunk át érték szerinti átadással, akkor a referencia változóban tárolt cím másolódik le, tehát az értékcsere érvényes lesz a hívó környezetre is)
  • Ha érték típusú paramétert szeretnénk cím szerint átadni, azt a ref vagy az out kulcsszó segítségével tehetjük meg. Az out és a ref kulcsszó között annyi a különbség, hogy a ref-el átadott referenciaváltozót kell inicializálni használat előtt az out-al átadottat nem.
  • Mivel kétfajta változótípusunk van, ezért 4 különféle paraméterátadási lehetőségünk van

 

Metódusnév túlterhelés:

  • Jelentés: Több azonos nevű metódus egy osztályon belül
  • A metódusok szignatúrája egyedi az osztályon belül (szignatura = metódusnév + paraméterek száma, típus és sorrend)
  • Használhatunk több azonos nevű metódust is egy osztályon belül, de a paraméterlistájuknak különbözni kell

 

Felhasznált Irodalom: Sergyán Szabolcs – Programozás I – 4. előadás diasor

Kommentek

comments

Powered by Facebook Comments