Неопределенность свойства / средства доступа при использовании операторов тела выражения - PullRequest
0 голосов
/ 19 апреля 2020

Используя C# (. Net 4.6), предполагая этот код:

public class test
{
    private bool _a = true;

    public test() { }

    public bool a => _a;
}

Является ли реализация public bool a => _a; такой же как:

public bool a { get => _a; }

или:

public bool a
{
    get => _a;
    set => _a = value;
}

?

То есть, если использовать объявление тела с одним выражением для свойства / средства доступа (в отличие от объявления обоих get и set отдельно) является ли полученная функция доступной только для чтения / записи или только для чтения?

Я пытался просмотреть справку Microsoft (здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties), но в ней упоминались только тела выражений. одно предложение и не совсем понятно, о различиях. ??

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Вы бы имели только аксессор get. Итак, это:

public bool a => _a;

Будет оцениваться следующим образом:

public bool a
{
    get
    {
        return _a;
    }
}

Вы можете найти промежуточные шаги и результаты компиляции вашего кода здесь в SharpLap

0 голосов
/ 19 апреля 2020
public bool a => _a;

Реализация такая же как:

public bool a { get => _a; }

А:

static bool _a = true;
public bool a { get; set; } = _a;

Реализация такая же как:

public bool a
{
    get => _a;
    set => _a = value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...