gpt4 book ai didi

c# - 加载属性延迟加载

转载 作者:行者123 更新时间:2023-12-02 05:46:50 28 4
gpt4 key购买 nike

我有一个属性,它的 getter 应该只在第一次加载它的值。第二次返回加载的值,不再加载:

private Object _MemberValue;

public Object MemberValue
{
get
{
if(_MemberValue == null)
{
_MemberValue = LoadMember();
}

return _MemberValue;
}
}

在 VB.NET 中,有 Static 关键字。有了它,您不必声明类范围的成员。

Public Property MemberValue as Object
Get
Static value as Object = Nothing

If (value is Nothing) Then
value = LoadMember()
End If

Return value
End Get
End Property

在 C# 中没有这样的关键字。

是否有更好的 C# 实现来解决此问题或其他模式?

最佳答案

Are there better C# implementations of this problem or other patterns?

可能不是。您可以使用Lazy<T>如果您愿意,可以作为替代品,但基本上与您的第一个示例相同。使用Static在 VB.NET has some serious drawbacks ,所以我不会以任何方式使用它。

如果您愿意Lazy<T> ,这就是我要使用的:

private Lazy<object> _MemberLazy = new Lazy<object>(LoadMember);

public object MemberValue
{
get
{
return _MemberLazy.Value;
}
}

关于c# - 加载属性延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42439827/

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