Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet a változokat...

Hogyan lehet a változokat mindenhol elérni?

Figyelt kérdés
Ne nézzetek hülyének, de nem tudom ezt ko krétan, hogy nevezik pascalból procedure-nek hívták, de itt nem tudom pontosan. Hogy csináltam a public void nev()-el ilyen alprogramokat vagy nem tudom, hogy mondják ezeket. De, ha mondjuk egy változót akarok használni amit el is akarok érni mind a két ilyne alprogramban azt hogy csináljam? Mert, ha kétszer megadom azt a változót, akkor nem ír ki hibát, de szerintem így külön kezeli ezekben. Mert igazából tömböt akarnám ehekben elérni. Hogy csinálok külön egybekérést egy tömbe és a másik ilyen alprogramban kiiratom és ezeket futattom le a főprogramban. Ezt hogy oldjam meg, hogy a tömböt egyszer keljen megadni és azt mindenhol elérjem. Ne hülyézetek le még kezdő vagyok. Visual studioban c# (c sharp)

2016. nov. 19. 16:52
1 2 3
 1/23 A kérdező kommentje:
De, ha itt is procedurának mondják, akkor cska én keverem össze vissza ezt, mert itt úgye nem ezt írnák be.
2016. nov. 19. 16:55
 2/23 anonim ***** válasza:

C#-ban nincsen eljárás (ez a procedure rendes neve magyarul), csupán olyan függvény, aminek nincs visszatérési értéke (void function).

Amit te akarsz, az az, hogy globálissá teszel egy változót.

Elsőkörben kijelenteném: AZ OOP paradigmában a globális változó létezése lehetetlen, a C# pedig szigorúan OOP paradigmát valósít meg.

Namost, ez nem jelenti azt, hogy amit szeretnél, nem lehet megcsinálni. Hogy hogyan, az egy érdekes kérdés. Ennek a megvalósítása egy dologtól függ: A programod a főosztályra szűkül-e, vagy más osztályokat is implementálsz, amiben elérhetővé akarod tenni a 'globális' változódat?


Ha a programod kizárólag a fő programosztályra szűkül, amiben a main függvényed is van, akkor egyszerűen létrehozol a main függvényen kívül, közvetlenül az osztály definíciójában egy változót. Ezt az osztályon belül mindenhol elérheted majd.

Ha viszont több osztályt is definiálsz a programban, és mindegyikben elérhetővé akarod tenni a változódat, akkor szükséged lesz egy statikus osztályra, amiben statikus adattagként megadhatod. A statikus osztályokat nem példányosítjuk, önmagukban léteznek egyetlen 'példányként', ha úgy tetszik. És ezek bárhonnan elérhetőek, a benne található statikus tagokkal együtt. Így az összes osztályod összes függvénye láthatja majd.


VISZONT! Amit meg akarsz valósítani, az szigorúan ellenemegy az OOP koncepciójának (íme a remek példa, miért ne C#-ot oktassanak első nyelvként), az, hogy bizonyos elemeket globálissá akarsz tenni, és mindenhonnan elérhetővé tenni csak akkor ajánlatos, ha az elengedhetetlenül szükséges valamilyen szoftverarchitektúra megvalósításához. Az OOP-friendly megoldás az lenne, hogy a függvényeidnek megadod a változtatni kívánt tömböt paraméterként, és így a paraméterlistájukon keresztül elérik. (Ha többosztályos megvalósításra törekszel, az egyosztályos esetben rendben van osztályszintű adattagként deklarálni).


Kérdés? :D

2016. nov. 19. 18:09
Hasznos számodra ez a válasz?
 3/23 anonim ***** válasza:
0%

Létezik globális és lokális változó.

Hogy mi a különbség a kettő között, annak kell utána olvasnod.

2016. nov. 19. 18:10
Hasznos számodra ez a válasz?
 4/23 anonim ***** válasza:
0%

Az előttem szólóra ne hallgass.

Hülyeségeket beszél.

Nyugodtan használj globális változót, változókat, ha kell, csak ne vidd túlzásba. Az OOP elve nem fog sérülni.

2016. nov. 19. 18:24
Hasznos számodra ez a válasz?
 5/23 A kérdező kommentje:
De egy globális változót hogy adjak le mi arra a szöveg mármint amit be kell írnom.
2016. nov. 19. 19:01
 6/23 anonim ***** válasza:
0%

Minden változó, amit nem függvényen belül deklarálsz, globális (tehát a programodban bárhol, bármikor elérhető és manipulálható (!)) lesz.


Az összes többi lokális változó, tehát, mint ilyen, csak az adott függvényen belül lesz érvényes. Máshonnan nem is fog látszani, nem lesz még csak olvasható sem.


Itt egy leírás erről:


[link]

2016. nov. 19. 19:08
Hasznos számodra ez a válasz?
 7/23 A kérdező kommentje:
ez c++ nyelv nem c# amit te linkeltél.
2016. nov. 19. 19:15
 8/23 anonim ***** válasza:
88%
pen-dragon, ne üsd már ebbe is bele azt a nagy orrodat. A C# szigorú OOP elvet követ, és mindent osztályokban valósít meg. Nem tudsz a globális névtérre (vagy bármelyik névtérre) bármilyen adattagot deklarálni, kizárólag osztályokat. Tehát adattagok osztályszinten elérhetőek, illetve ott vannak a statikus osztályok, illetve adattagok, amik bárhonnan elérhetőek lesznek.
2016. nov. 19. 19:26
Hasznos számodra ez a válasz?
 9/23 anonim ***** válasza:

Ez a te szempontodból lényegtelen. A változók (SZINTE) minden nyelvben így vannak deklarálva.

Amit ott olvasol, az az ismeret neked is megfelel, mivel nem nyelvspecifikus.

2016. nov. 19. 19:26
Hasznos számodra ez a válasz?
 10/23 anonim ***** válasza:
92%

"A változók (SZINTE) minden nyelvben így vannak deklarálva.

Amit ott olvasol, az az ismeret neked is megfelel, mivel nem nyelvspecifikus."


De nem a C# nyelvben, mivel itt nincs globális változó... legfeljebb statikus adattag. Megint osztod a saját prédikációdat, aminek semmi köze az aktuális témához.

2016. nov. 19. 19:31
Hasznos számodra ez a válasz?
1 2 3

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!