Thread: [C#] get/set
-
27-02-2010, 12:46 #1Approved 9liver
- Registered
- 10/12/06
- Location
- Antwerpen
- Posts
- 3,721
- iTrader
- 4 (100%)
- Mentioned
- 0 Post(s)
[C#] get/set
Hey,
Dit stuk snap ik dit echt niet in C#
Waarom zou je dit gebruiken:
In plaats van:Code:public Vector2 GetPosition { get { return position; } }
Ze lijken hetzelfde te doen, maar hoe werkt die eerste precies?Code:public Vector2 GetPosition() { return position; }
Hetzelfde bij het declareren van variablen, wat doet dit precies:
Wat ik nog minder snap, is wat dit dan doet:Code:public string name { get; private set; }
Code:public abstract string name { get; }
Ik vind op Google wel wat uitleg, maar daar snap ik niet veel van. Kan iemand me dit even uitleggen?
Bedankt
no votes
-
-
27-02-2010, 13:40 #2Member
- Registered
- 06/04/06
- Location
- BXL
- Posts
- 4,415
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/40
Bij 't eerste maakt de compiler u het leven gemakkelijker door zelf achter de schermen properties aan te maken die het toekennen en uitlezen van velden afhandelen. Er zijn subtiele nuances, maar properties zijn gewoon hetzelfde als get- en setmethodes, ze maken uw code alleen een beetje eenvoudiger. 't Is idiomatische C#, ik zie geen reden om ze niet te gebruiken.
wordtPHP Code:Vector v = new Vector();
v.setPosition(v.getPosition()+ 10);
PHP Code:Vector v = new Vector();
v.Position += 10;
I caught a glimpse and now it haunts me.no votes
-
27-02-2010, 13:47 #3Member
- Registered
- 04/11/03
- Location
- Brugge
- Posts
- 13,390
- iTrader
- 16 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/18
Een echt voordeel is er niet meteen, de compiler gaat intern ook methoden genereren. 't Is misschien wat duidelijker omdat je bvb alle properties bij elkaar kunt zetten (en apart van andere methoden).
Door de compiler worden er ook gewoon get/set-methoden gegenereerd, dus uiteindelijk komt het op hetzelfde neer.
Dat zijn auto-implemented properties. Daar wordt gewoon het standaard gedrag geimplementeerd (dus "return name" bij get, "name = value" bij set).
Dat laatste is ook een auto-implemented property, maar in een abstracte klasse. Ook wordt hier enkel de get geimplementeerd, het is dus een read-only property.
C# Station: C# Tutorial Lesson 10 - Properties voor wat meer informatie.Fractal Design Node 304 || Asus H87I-PLUS || Intel i5 4570 || 16GB DDR3 || EVGA 1080 Ti SC Black Edition ||Samsung 840 EVO 250GB || Dell U3818DW
Fractal Design Define XL || Gigabyte 790X-UD3P || AMD Phenom II X4 955 || 4GB DDR2 || HD4850 || 20TB
no votes
-
27-02-2010, 19:56 #4Approved 9-lifer
- Registered
- 27/08/04
- Location
- Leuven
- Posts
- 930
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 11/38
Die lesson in de post hierboven zou ik zeker eens lezen.
Verder een opmerking:
Men noemt de property zelf gewoonlijk niet "GetPosition".Code:public Vector2 GetPosition { get { return position; } }
Vaak gewoon "Position":
Anders verwar je de property zelf met getters en setters. Bovendien gaat je code raar lezen als je in de property een setter toevoegt.Code:public Vector2 Position { get { return position; } }no votes
-
28-02-2010, 20:15 #5Approved 9liver
- Registered
- 10/12/06
- Location
- Antwerpen
- Posts
- 3,721
- iTrader
- 4 (100%)
- Mentioned
- 0 Post(s)
Bedankt voor de uitleg, nu snap ik het ongeveer

Toch wel verwarrend als je het anders gewoon bent
no votes

