Kezdőoldal » Számítástechnika » Programozás » Mi az értelme a this. Name =...

Mi az értelme a this. Name = name; és this. Age = age; soroknak az alábbi programrészben? A futás során a "lajos" értéket miért nem veszi fel?

Figyelt kérdés

class Person

{

public string name = "lajos";

public int age = 5;

public Person(string name, int age)

{

this.name = name;

this.age = age;

}

}


class Program

{

static void Main(string[] args)

{

Person d = new Person("Ferenc", 2);

}

}

}



2016. márc. 23. 19:19
 1/10 anonim ***** válasza:
100%
this.propertynév-ra azért van szükség, mert a paraméter elfedné a property-t a lokális scope-ban. Ezért vagy más nevet kell adni a paraméternek, vagy a példány scope-jára hivatkozni. Lajost pedig azért nem veszi fel, mert Ferivel felülcsapod példányosításkor.
2016. márc. 23. 19:25
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Mi az értelme?

Értékadás egy konstruktorban.

OOP 1. lecke.

A "lajos"-is felveszi példányosításkor, csak rögtön utána felülírod "Ferenc"-cel.


Aminek inkább nincs értelme az ez:

public string name = "lajos";

public int age = 5;

Teljesen random default értékek, ráadásul nincs is paraméter nélküli konstruktor.

2016. márc. 23. 19:36
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

A sima Name az osztájon belüli érték(lajos),

a konstruktorban a name példányszintű változó egyenlővé teszed az argumentumban megadott változóval, de mivel mind a kettő neve ugyanaz ezért kell a this hogy megkülönböztesd.


Ez a konstruktor is ugyanúgy működik, csak nem kell benne a this kulcsszót használni:

public Person(string Kukutyin, int AgeOfEmpires)

{

name = Kukutyin;

age = AgeOfEmpires;

}

}

2016. márc. 23. 19:37
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:
Tehát az argumentumban megadott változó felveszi példányszintű változó értékét. ok. de ez mire jó? mi az amit ez után már megtehetek illetve e nélkül nem menne? esetleg a láthatósággal van kapcsolatban?
2016. márc. 23. 20:21
 5/10 anonim ***** válasza:
Fordítva, a példány szintű tagváltozó veszi fel az argumentumban megadott értékeket. Ha csinálsz egy új Person példányt, akkor a nevet és kort eltárolja, azaz a lajost és az 5-öt felülírja azzal amit megadtál. A this azért kell mert az argumentumban és az osztályban is van gy name nevű változó, a this mondja meg hogy nem az argumentumra gondoltál hanem a példány nevére.
2016. márc. 23. 20:29
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

Kezdj el olvasni valami OOP tanagyagot.

Enkapszuláció.

Az a lényege, hogy innentől kezdve a két változót egy objektumban egységben tudod kezelni.

2016. márc. 23. 20:49
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

A lényege pontosan az, hogy inicializálod vele az objektumodban levő adattagokat. Amikor az osztályból példányosítasz egy objektumot default (paraméterek nélküli) konstruktorral (ami jelen esetben mondjuk nincs), akkor az objektumodban a name "lajos", az age pedig 5 lenne. Mivel ezek vannak beállítva default értékeknek. Ha viszont a fent látható konstruktorral hozod létre az objektumot, akkor az azzal a névvel, és korral fog rendelkezni, amit ott argumentumként megadsz.


Aminek itt nincs túlzottan sok értelme, az esetleg a "lajos" és az 5 mint default értékek. Azon velül, hogy ad-hoc baromságnak tűnnek, nem is kerülnek soha igazán beállításra. Mivel egyetlen konstruktorod van, ami éppenséggel mindkettő értékét beállítja, így lényegében sosem hozol létre olyan objektumot, ahol ezek a default értékek jönnek létre. Azt hiszem. őszintén szólva nem tudom, mi történik (lehet-e egyáltalán ilyet csinálni) akkor, ha nem hívsz konstruktort (tehát new Person(x,y); helyett csak new Person; )


Nyilván az OOP lényege akkor jön elő, ha nem egy osztályról van szó, amit egyszer példányosítasz. Ha több Person-t hozol létre akkor már láthatóvá válik a dolog lényege.

2016. márc. 24. 12:52
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:

Az említett alábbi részt hogy hívjuk? osztályváltozó?

public string name = "lajos";

public int age = 5;


és itt a Ferenc paraméter vagy példányváltozónak mondjuk?

Person d = new Person("Ferenc", 2);

}

}

}

2016. márc. 25. 22:06
 9/10 anonim ***** válasza:

Osztályon belüli függvényeket metódusnak szokás hívni, a sima 'változókat' pedig adattagnak.


Példányosításnál meg paramétert szoktunk mondani, esetleg kezdőérték.

2016. márc. 26. 00:37
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
köszönöm a válaszokat.
2016. márc. 26. 16:47

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!