Jam*_*Ide 1 c# lazy-initialization
我有几个简单的数据库查询使用Entity Framework我想加载一次,Lazy<T>但我可以看到每次调用属性时执行查询.我尝试的变化是:
public static IEnumerable<string> Foos => new Lazy<IEnumerable<string>>(() => _db.Foos.Select(x => x.Name)).Value;
public static IEnumerable<string> Foos=> new Lazy<IEnumerable<string>>(() => _db.Foos.Select(x => x.Name).ToArray()).Value;
public static Lazy<IEnumerable<string>> Foos => new Lazy<IEnumerable<string>>(() => _db.Foos.Select(x => x.Name).ToArray());
public static IEnumerable<string> LightingEnvironments
{
get
{
var lazy = new Lazy<IEnumerable<string>>(() => _db.Foos.Select(x => x.Name).ToArray());
return lazy.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
Lazy每次调用属性getter时,您都在构建一个新的.A Lazy只允许您重新使用已构造的值,如果您保留Lazy实例并在每次需要该值时在同一实例上调用该Value属性.Lazy
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |