Thread: [C#] get/set

  1. #1
    Bv202's Avatar
    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:
    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
    no votes  

  2. #2
    Messias.'s Avatar
    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.

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

    PHP Code:
    Vector v = new Vector();
    v.Position += 10
    I caught a glimpse and now it haunts me.
    no votes  

  3. #3

    Registered
    04/11/03
    Location
    Brugge
    Posts
    13,390
    iTrader
    16 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Quote Originally Posted by Bv202 View Post
    This quote is hidden because you are ignoring this member. Show
    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).

    Quote Originally Posted by Bv202 View Post
    This quote is hidden because you are ignoring this member. Show
    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.

    Quote Originally Posted by Bv202 View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    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  

  4. #4
    NeverwinterX's Avatar
    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:
    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.
    no votes  

  5. #5
    Bv202's Avatar
    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  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in