Заменить один пробел несколькими пробелами в переменной

Вот моя реализация решения вашей проблемы. В принципе идея - это свойство, которое будет задано функцией при первом доступе, и последующие обращения приведут к тому же возвращенному значению, что и первое.

public class LazyProperty<T>
{
    bool _initialized = false;
    T _result;

    public T Value(Func<T> fn)
    {
        if (!_initialized)
        {
            _result = fn();
            _initialized = true;
        }
        return _result;
    }
 }

Затем, чтобы использовать:

LazyProperty<Color> _eyeColor = new LazyProperty<Color>();
public Color EyeColor
{ 
    get 
    {
        return _eyeColor.Value(() => SomeCPUHungryMethod());
    } 
}

Конечно, накладные расходы на передачу указателя функции, но он выполняет эту работу для меня, и я не замечаю слишком много накладных расходов по сравнению с запуском метода снова и снова.

0
задан Sergio 17 January 2019 в 18:03
поделиться