最短版本的Lazy初始化

时间:2014-04-03 13:04:22

标签: c# lazy-evaluation

这是最简洁的代码版本如下所示?有没有办法缩短它?任何语法糖?除了var,我知道var

Lazy<OrderEventItem[]> orderEventItems = new Lazy<OrderEventItem[]>(delegate
{
    return .......;
});

1 个答案:

答案 0 :(得分:2)

var orderEventItems = new Lazy<OrderEventItem[]>(() => ...);

如果你真的想摆脱new Lazy<OrderEventItem[]>,你可以创建一个通用的静态辅助方法:

static Lazy<T> CreateLazy<T>(Func<T> f)
{
    return new Lazy<T>(f);
}

然后您的行变为:

var orderEventItems = CreateLazy(() => ...);

尽管如此,我发现它的可读性低于第一种方法。