Очевидным выбором будет Lazy<T>
:
private Lazy<string> _answerLazy = new Lazy<string>(() => "answer");
public string Answer => _answerLazy.Value;
Вы можете опустить метод и использовать вместо него ленивое действие.Кроме того, Lazy<T>
имеет параметры безопасности потоков, которые я бы предпочел.Кроме того, оценка до null
не означает, что он продолжает вычислять «новое» значение.
Если вам не хватает преимущества Lazy<T>
, просто продолжайте использовать то, что вы делаете,Это может быть неудобно для записи и более подвержено ошибкам, но это будет работать.