gpt4 book ai didi

c# - 检查延迟加载的属性是否已经实例化

转载 作者:太空狗 更新时间:2023-10-30 00:58:26 24 4
gpt4 key购买 nike

在具有延迟加载属性的类中,例如:

private Collection<int> someInts;

public Collection<int> SomeInts
{
get
{
if (this.someInts == null) this.someInts = new Collection<int>();
return this.someInts;
}
}

是否也值得拥有这样的属性(property):

public bool SomeIntsExist
{
get { return (this.someInts != null && this.someInts.Count > 0); }
}

然后使用该属性.. 例如:

if (thatClass.SomeIntsExist)
{
// do something with thatClass.SomeInts collection
}

或者这是过早的优化。使用类似下面的东西当然更容易滚动,但它会不必要地实例化集合:

if (thatClass.SomeInts.Count > 0)
{
// do something with thatClass.SomeInts collection
}

编译器是否足够聪明,可以解决这样的问题?有没有更好的办法?

最佳答案

即使是惰性初始化属性听起来也像是过早的优化。我能想到的只有极少数情况下延迟空集合的创建有助于解决问题(假设您的示例没有过于简单化)。

但是当您必须延迟集合初始化时,您可能也应该(甚至必须)优化 Exists 方法,因为延迟初始化是一项关键要求。

关于c# - 检查延迟加载的属性是否已经实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2833037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com