Hogy kell használni visual basic 2010-től fölfelé a funkciókat? Gondolok itt a byval, és byref kulcsszavakra is.
Tanulom a visual basic 2015 programozást, de a 2010-estől kezdve látok olyat, hogy funkciók.
Mik ezek, hogyan lehet használni?
Mi az az érték, és referencia szerinti adás?
Mármint byref és byval?
Köszi, ha valaki elmondja!
A ByVal az, mikor érték szerint adod át, a ByRef az, mikor cím szerint (ha kened a c++-t, akkor már képben vagy).
Konyhanyelven: az előbbinél a függvény nem tudja megváltoztatni a változót; az utóbbinál igen.
Sub Valami (ByVal aaa As Int, ByRef bbb As Int)
Let aaa = 5
Let bbb = 5
End Sub
...
int x = 1
int y = 1
Valami (x,y)
Print x, y
Ekkor azt írja ki, hogy 1, 5, mert a második byref-fel volt.
Vagyis: ha egy függvénynek olyan adatot akarsz adni, amit nem szabad megváltoztasson, akkor ByVal; ha azt akarod, hogy megváltoztassa (pl. valami számolás eredménye), akkor ByRef. Pl:
Sub Osszead (ByVal a As Int, ByVal b As Int, ByRef osszeg As Int)
Let osszeg = a + b
End Sub
int x = 4
int y = 2
int s
Osszead (x,y,s)
Print s
Told át Juhász Pici Prog1 jegyzetét. A történet nagyjából annyi, hogy amikor te csinálsz egy változót, az valahová kerülni fog a memóriában. Amikor írsz egy metódust, és vannak paraméterei, akkor azok szintén egy-egy új memóriaterület lesz.
A byval röviden azt csinálja, hogy a változód értékét az egyik memóriaterületről a másikra egyszerűen csak lemásolja. Így ha a metóduson belül piszkálod, az eredeti érték nem változik, csak a másolat.
A byref ezzel ellentétben azt csinálja, hogy nem az értéket másolja le, hanem csak annyi információt mond a metódusnak, hogy a memóriában azt az értéket hol találja meg. Így fizikailag csak egyszer fog szerepelni a memóriában az adott érték. Namármost, ha az értéket módosítod, akkor ez az eredeti példány fog módosulni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!