Сокращенные аксессуары и мутаторы

Я изучаю С#, и я узнаю о том, как сделать поля приватными для класса и использовать Getters и Setters для раскрытия методов вместо значений полей.

Являются ли get; set; в методе 1 и методе 2 эквивалентными? например является одним сокращением другого?

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; }
    }
}

Наконец, будет ли использоваться метод 2, если вы хотите, например, выполнить расчет до получения или установки значения? например преобразование значения в процентах или выполнение проверки? например.

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; }
    }
}

Ответ 1

Да, метод 1 является ярлыком метода 2. Я предлагаю использовать метод 1 по умолчанию. Если вам нужна дополнительная функциональность, используйте метод 2. Вы также можете указать различные модификаторы доступа для get и set.

Ответ 2

Да, Method2 - это путь, когда у вас есть пользовательские функции получения и установки. По умолчанию, когда вы используете Method1, будет внутреннее частное свойство по умолчанию. Пожалуйста, обратитесь к этому URL для более подробной информации.

Образец:

string _name;

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