Shorthand Accessors and Mutators

Gravy picture Gravy · May 25, 2013 · Viewed 39.2k times · Source

I am learning C#, and am learning about making fields private to the class, and using Getters and Setters to expose Methods instead of field values.

Are the get; set; in Method 1 and Method 2 equivalent? e.g. is one a shorthand of the other?

class Student
{
    // Instance fields
    private string name;
    private int mark;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public int Mark
    {
        get { return mark; }
        set { mark = value; }
    }
}

Finally, would Method 2 be used when you want to for example perform a calculation before getting or setting a value? e.g. converting value to a percentage or perform validation? e.g.

class Student
{
    // Instance fields
    private string name;
    private double mark;
    private int maxMark = 50;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public double Mark
    {
        get { return mark; }
        set { if ( mark <= maxMark ) mark = value / maxMark * 100; }
    }
}

Answer

Saravanan picture Saravanan · May 25, 2013

Yes, the Method2 is the way to go when you have a custom getter and setter function. By default when you use Method1, there will be a default private property handled internally. Please refer this URL for more details.

Sample:

string _name;

public string Name 
{
    get => _name;
    set => _name = value;
}