Mikor jó a var kulcsszóval deklarálni változókat, példányosítani objektumokat?
Miért?
Lehet tudni előre, hogy string, int, char, Random stb. lesz a típusa, viszont számomra pl átláthatatlan a kód a var miatt és a suliban se így használjuk.
Szóval miért jó mégis? :)
Leginkább soha nem "jó", és általánosan minél kevesebbszer használod a var kulcsszót, annál jobb. Vannak esetek, amikor kényelmes (ha nagyon hosszú a típus megnevezése), de csak akkor elfogadható a használata, ha ettől függetlenül egyértelmű marad, hogy mi a változó típusa.
Példának okáért ha ugyanabban a sorban példányosítasz egy objektumot:
List<KeyValuePair<Int,String>> pairList = new List<KeyValuePair<Int,String>>()
Ugyanabban a sorban kétszer is leírod a változó teljes típusát, ebben az esetben megengedhető lehet a var-t használni, és indokolt, mivel a típus megnevezése elég hosszú.
Amikor ne használj vart:
var result = SomeFunction();
A SomeFunction visszatérési típusa nem látszik ránézésre, így tovább tart megállapítani a result változó típusát. (Illetve ha a SomeFunction megváltozna, és más típust adna vissza, akkor ebben az esetben a változó típusa is megváltozna, ami nem biztos hogy jó dolog)
És a szürkezóna:
var grade = 4;
var name = "Jácint";
var isPassed = true;
var myObj = new MyClass();
Lehet, hogy a literálok/példányosítás megsúgja a változó típusát, de mivel a típusok megnevezése önmagában alig pár karakter, így nem különösebben indokolt a var használata.
Konkrétan a StackOverflow-n látom állandóan, és ugye alapból akkor keregélek ott, ha valamit nem tudok. Nehezebb úgy felfogni az ott levő kódot, ha var van és nem látom elsőre.
Tehát akkor, ha függvény adja a változó értékét, nem célszerű?
Az eszembe se jutna, mi van, ha az ember időközben megváltoztatja a visszatérési értékét, így a változó típusa se marad ugyanaz.
Nyilván evidens példa, de még nincs meg az a képességem, hogy mindenre előre gondoljak. ;)
80 %-os válaszoló válasza miért 48%-os?
Kedvesen, érthetően írt és ha valamiben nincs igaza, mindenki számára segítség, ha leírjátok, miért!
Milyen nyelvet használsz? Ez fontos lenne.
C#-ot használsz? Én ott sose használnám. Ugyanúgy nem, mint az auto típust a c++-ban. Nem természetes, hogy egy statikusan tipusozott nyelvben ilyet csinálj, rontja az olvashatóságot és kényelmetlenné teheti a debugolást. Itt egy cikk róla: [link] . Néhány esetben szerintük megéri használni, de az én személyes preferenciám az, hogy kerüljük el messziről. Suliban azért így tanítják valszeg, mert a legtöbb osztálytársam azt se képes felfogni, hogy hogyan működik egy while ciklus, nemhogy a tipusozást megértsék.
Abban az esetben ha javascriptet használsz (a kérdésedből először erre gondoltam): a var az függvény scoped. Tehát ha deklarálsz egy változót egy if-ben vagy egy valamilyen ciklusban, akkor az elérhető lesz az egész függvényben. A let az block scoped. Azaz az if-en belül deklarált változó csak annak az if-nek a kapcsos zárójelei között érhető el. Mindkét megoldásnak megvan az előnye. Én a let-et preferálom ahol lehet, var-r pedig ott, ahol a let-tel nem megoldható. Ehhez is egy cikk: [link]
Leginkább a C#-ot ismerem, a Java-t valamennyire, de fogok JavaScript-et is tanulni.
Igazán 80%-os válasza volt számomra hasznos C#-ra, de a Te áttekintő jellegű válaszod is sokat segített. :)
Nemcsak egyetlen egy nyelv érdekel. :)
Nem egyszerre szeretnék beleugrani mindbe, mert nem biztos, hogy lenne értelme, de szeretek kitekintést kapni és látni, hogy megy máshol.
A suliban pont, hogy NEM használjuk a var kulcsszót, talán egyszer sem szerepelt a kivetítőn eddig. :)
Köszönöm a linkeket is, meg fogom nézni!
(Bár már utánanéztem és nem lettem okosabb, ezért született a kérdés; de lehet, hogy nem megfelelő módon kerestem, cikket találtam.)
"Nemcsak egyetlen egy nyelv érdekel. :)"
Különböző nyelveken teljesen más a jelentése.
A var kulcsszó a LINQ és a névtelen típusok miatt lett bevezetve. Így nem kell kiírnod azt, hogy
IOrderedEnumerable<IGrouping<int, IEnumerable<string>>>
Vagy:
var x = new {
Alma: 5,
Beka: 6
};
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!