Archief - [C#] get/set

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bv202

Legacy Member
Hey,

Dit stuk snap ik dit echt niet in C#:confused:

Waarom zou je dit gebruiken:
Code:
public Vector2 GetPosition
{
get { return position; }
}

In plaats van:
Code:
public Vector2 GetPosition()
{
return position;
}

Ze lijken hetzelfde te doen, maar hoe werkt die eerste precies?

Hetzelfde bij het declareren van variablen, wat doet dit precies:
Code:
public string name { get; private set; }

Wat ik nog minder snap, is wat dit dan doet:
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:)

Messias.

Legacy Member
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.

PHP:
Vector v = new Vector();
v.setPosition(v.getPosition()+ 10);

wordt

PHP:
Vector v = new Vector();
v.Position += 10;

Yank

Legacy Member
Bv202 zei:
Waarom zou je dit gebruiken:
Code:
public Vector2 GetPosition
{
get { return position; }
}

In plaats van:
Code:
public Vector2 GetPosition()
{
return position;
}
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).

Bv202 zei:
Ze lijken hetzelfde te doen, maar hoe werkt die eerste precies?
Door de compiler worden er ook gewoon get/set-methoden gegenereerd, dus uiteindelijk komt het op hetzelfde neer.

Bv202 zei:
Hetzelfde bij het declareren van variablen, wat doet dit precies:
Code:
public string name { get; private set; }

Wat ik nog minder snap, is wat dit dan doet:
Code:
public abstract string name
    {
        get;
    }
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.

NeverwinterX

Legacy Member
Die lesson in de post hierboven zou ik zeker eens lezen.

Verder een opmerking:
Code:
public Vector2 GetPosition
{
get { return position; }
}

Men noemt de property zelf gewoonlijk niet "GetPosition".
Vaak gewoon "Position":
Code:
public Vector2 Position
{
get { return 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.

Bv202

Legacy Member
Bedankt voor de uitleg, nu snap ik het ongeveer :)

Toch wel verwarrend als je het anders gewoon bent :D
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan