Мне бы хотелось написать такой код:
class Zebra
{
public lazy int StripeCount
{
get { return ExpensiveCountingMethodThatReallyOnlyNeedsToBeRunOnce(); }
}
}
РЕДАКТ: Почему? Я думаю, что это выглядит лучше, чем:
class Zebra
{
private Lazy<int> _StripeCount;
public Zebra()
{
this._StripeCount = new Lazy(() => ExpensiveCountingMethodThatReallyOnlyNeedsToBeRunOnce());
}
public lazy int StripeCount
{
get { return this._StripeCount.Value; }
}
}
При первом вызове свойства он будет запускать код в блоке get
, а затем просто вернет значение из него.
Мои вопросы:
- Какие затраты будут связаны с добавлением такого ключевого слова в библиотеку?
- В каких ситуациях это может быть проблематично?
- Вы считаете это полезным?
Я не начинаю крестовый поход, чтобы получить это в следующей версии библиотеки, но мне любопытно, какие соображения должны иметь такую функцию, как это должно быть.