C és c++ után milyen nehéz megtanulni a c#-ot?
Elvileg könnyebb, mint a C++, de mégis, C++-os beidegződésekkel nekifogni C#-ozni azért okozhat fejvakarást. Ami a C++-hoz képest szokatlan lehet, az a reference és value type-ok megértése, mert ugye C++-ban bármi lehet referencia és value is, attól függ, hogy te hogyan használod. A másik, hogy C#-ban egyáltalán nincs kontroll afelett, hogy a stack-en vagy heap-en hozol létre valamit. És nem is kell vele foglalkozni, mert pl. csakis new-val hozhatsz létre új példányokat a reference type-okból.
Tehát a memóriakezelést és a pointerekkel való szívást átveszi a programozótól a framework, de azt is meg kell érteni, hogy hogyan müködik.
Szóval szokni kell, és ez nem egy hónap lesz. Arról nem is beszélve, amit már említettek fentebb: egy álláshoz édeskevés az, hogy ismered a szintakszist, a .NET framework-ben is otthon kell lenni, ismerni kell az osztályokat, névtereket, Winforms, stb., tehát a library-t, mint ahogy C++-ban is ismerni kell mondjuk a Qt-t vagy az MFC-t, vagy valamilyen framework-öt.
Szóval én nem írnám bele az önéletrajzomba arra alapozva, hogy majd egy hónap alatt megtanulom :D Ha a saját példámból indulok ki: már sok éve nem hogy nem írtam, de nem is láttam egy sor C++ kódot sem, pedig régen dolgoztam vele. De mégis, hiába a ~2 év tapasztalat, már annyi idő eltelt, hogy szinte mindent elfelejtettem, csak a nagyon alap dolgok maradtak meg, meg némi WinAPI tudás, de csak azért, mert azt a részét még C#-ban is használgatom néha.. Így aztán nem merném beírni egy önéletrajzba.. nemhogy egy olyan nyelvet, amit még nem is ismerek :O
#7: "A másik, hogy C#-ban egyáltalán nincs kontroll afelett, hogy a stack-en vagy heap-en hozol létre valamit."
nofene.
int myInt;
MyClass myObj = new MyClass();
A fenti kettőről nem tudod megmondani hol jön létre?
# 8:
Na, két dolog van itt.
Az első:
Lehet, hogy te a suliban azt tanultad, hogy a value type-ok a stack-en vannak, a reference type-ok meg heap-en, és ezt te szentírásnak veszed, mint minden kezdő, de azért ez nem ilyen egyszerű. Szóval ne kötözködj olyasmiben, amiről csak felszínes ismereteid vannak.
De nézzük meg, mennyire értesz ahhoz, amiről osztod az észt.
1:
class SomeClass
{
int a;
}
Itt az 'a' szerinted hol tárolódik?
2:
for (int i = 0; i < 10; i++)
{
int b = 5;
}
Itt az 'i', és a 'b' szerinted hol tárolódnak?
3:
void SomeMethod()
{
int c = 30;
}
Itt a 'c' szerinted hol tárolódik?
A második:
Nem azt mondtam, hogy nem tudod, hogy hol vannak. Egyébként is, a fentebbi példákon, ha utánanézel a dolgoknak, ki fog derülni, hogy korántsem olyan egyszerű és egyértelmű az, hogy hol vannak, mint ahogy te azt elképzeled. Egyetlen dolgot lehet biztosan kijelenteni: a reference type-ok mindig a heap-en vannak.
De nem is ez a lényeg, mert én azt állítottam, hogy nem tudod kontrollálni, hogy hol legyenek. Ez - ha nem értenéd - azt jelenti, hogy nem tudsz reference type-ot a stack-en létrehozni pl.
A CLI dönti el, mit hova rak, és nem te.
És az egészet még megbonyolítja az a tény, hogy a standard nem ír elő erre semmit, így implementáció-függő. Pl. simán el tudom képzelni, a value type-ok esetében a mono framework kicsit más logika szerint működik, mint a .NET framework.
#9: "De nézzük meg, mennyire értesz ahhoz, amiről osztod az észt. "
Ne is haragudj, de én nem osztottam az észt, mindösszesen egy kérdést tettem fel. Az idézett mondattal kapcsolatban, amit a következő hozzászólásban rögtön át is értelmeztél ugye.
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!