Лучшее решение при ленивой настройке недвижимости - PullRequest
0 голосов
/ 01 мая 2019

У меня есть много кода, подобного следующему, который используется для ленивой загрузки свойств и предотвращения дорогостоящих повторных выборок.

Я знаю, что в последних версиях c # было много изменений в отношении свойств, но я не могу найти ничего, что могло бы свести на нет необходимость чего-то подобного.

Есть ли сейчас лучший способ справиться с этим сценарием, или это все еще путь?

private string _answer;

public string Answer => _answer ?? (_answer = GetAnswer());

private string GetAnswer()
{
    var answer = "";
    return answer;
}

1 Ответ

0 голосов
/ 01 мая 2019

Очевидным выбором будет Lazy<T>:

private Lazy<string> _answerLazy = new Lazy<string>(() => "answer");

public string Answer => _answerLazy.Value;

Вы можете опустить метод и использовать вместо него ленивое действие.Кроме того, Lazy<T> имеет параметры безопасности потоков, которые я бы предпочел.Кроме того, оценка до null не означает, что он продолжает вычислять «новое» значение.

Если вам не хватает преимущества Lazy<T>, просто продолжайте использовать то, что вы делаете,Это может быть неудобно для записи и более подвержено ошибкам, но это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...