Написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией - C#

Узнай цену своей работы

Формулировка задачи:

Хочется написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией. Первой идей было
             get
            {
                lock (locker)
                {
                    if (item = null)
                    {
                        item = CalculateSomeData();
                    }
                }
                return item;
            }
вторым возможным вариантом стало использование Lazy<>, который, как подсказал msdn, потокобезопасен. Вопрос - можно ли в многопоточном приложении для достижения схожей логики смело использовать Lazy<>.
item = new Lazy<object>(...)
И будет ли в данном случае хоть какая-то разница между двумя вариантами?

Решение задачи: «Написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией»

textual
Листинг программы
Lazy<MyObj> item = new Lazy<MyObj>(CalculateSomeData);
 
public MyObj Item
{
   get { return item.Value; }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы