Kezdőoldal » Számítástechnika » Programozás » C#-ot gyakorlok. Az osztályok,...

C#-ot gyakorlok. Az osztályok, metódusok elméletét értem, gyakorlat nem megy. Egészet visszaadó metódus hívása?

Figyelt kérdés

A főprogramból hívom a metódust, kap egy int típusú változót.

A metódus számol, oszt-szoroz, az adott int értéke megváltozik.

Szeretném visszakapni és tovább használni a főprogramban immár a megújult int-et.


Odáig eljutottam, hogy a metódus lefut, meg is kapja az int értékét és hibátlanul elvégzi a számításokat.

Viszont a főprogram az eredeti int-tel számol tovább, nem az újjal.


Ref hivatkozással megoldódott, de az elvileg nem praktikus ide, referenciatípusoknál volna jó, illetve ref esetén az int egy virtuális példányával számol a program, pedig itt nem ez lenne a cél. (Jól értem ezt az egészet?)



Kérlek, ne bántsatok!

Igen, buta vagyok még ehhez, ugyanakkor pont tanulni akarok, megérteni, fejlődni. ;)


2018. nov. 21. 19:46
 1/6 tabaki ***** válasza:

Nyugi, én sem értek hozzá, meg nem is egészen világos a problémád... A metódus végén a return adja vissza az eredményt. Mit t'om én:


int valami(int ertek){

//számolás...

return ertek;

}


Ezt így hívhatod meg a programból:

...

ertek = valami(ertek);

...


A metódus által megkapott változó nem ugyanaz, hiába hívod ugyanúgy.

2018. nov. 21. 20:04
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Sokszor magát a szintaktikát nem értem. :D


Akár hiszed, akár nem, most jelenleg működik.

A metódus által "átformált" egésszel számol tovább a főprogram.


Viszont elég a metódust simán csak így létrehozni ezek szerint?

int valami(int parametervalami) {} ?


Amúgy miért kéri a láthatósági beállítást?


Jelenleg úgy van nálam, hogy: public int valami(int parametervalami) {}


Egyébként ha nem adom meg a láthatóságot, nem public automatikusan?

2018. nov. 21. 20:25
 3/6 tabaki ***** válasza:
Valószínűleg nálad van jól... Én nem szerénykedésből állítom, hogy nem értek a c#-hoz, tényleg csak bele-belenyalok a kérdések kapcsán, és a szimpla pascalhoz képest én is pont ezekbe az elérhetőségi szabályokba szoktam belebonyolódni, úgyhogy semmi okosat nem tudok mondani. Gondolom, valamelyik hozzáértő kolléga majd útbaigazít.
2018. nov. 21. 20:35
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

igen elég így létrehozni, ha a fenti dolgot szeretnéd megvalósítani


C# -ban az alábbi láthatósági szabályok vannak:

private csak a tartalmazó osztályban lehet hozzáférni

protected csak a tartalmazó osztályból és a származtatott osztályokban lehet használni

public nincs korlátozás

internal csak a tartalmazó programból lehet használni

protected internal ua. mint előbb plusz a protected hozzáférés


alapjáraton privateként hozod létre

2018. nov. 21. 20:36
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
Inkabb toltsd fel a kodot valahova es masold be. Foprogram az wtf akar lenni?
2018. nov. 21. 21:24
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

"Viszont a főprogram az eredeti int-tel számol tovább, nem az újjal."

C#-ban két féle típus van: érték és referencia. Az érték típusok (lsd int, byte, stb, struct) paraméterátadásnál lemásolódnak a paraméterbe. Ha ezzel számolsz, akkor az az eredetire értelemszerűen nem lesz hatással. A ref a következőt csinálja: érték típus esetén átadja ugyanazt a memóriacímkét, így ugyanazzal számol tovább a program; referencia típus esetén pedig nem történik referencia-copy (erre olyan esetekben van szükség, ha újra akarod allokálni a függvényen belül az objektumot, pl: ha ref nélkül adsz át tömböt paraméterként, akkor a módosítás kihat az eredetire, de egy new int[n] már nem).

Az, hogy az eredményt hogy akarod közölni, az sok mindentől függ. Nyilván ha x-ból számol ki egy y értéket, akkor nem az a praktikus, ha az x átváltozik y-ra. Visszatérési értékként érdemes ilyenkor visszaadni (pl: int szamol(int x) {oszt-szoroz.. return x;}, így az int y = szamol (x) esetén y-nal tudsz tovább számolni).

2018. nov. 21. 22:42
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!