相关疑难解决方法(0)

有没有办法只在C#中设置一次属性

我正在寻找一种方法来允许C#对象中的属性只设置一次.编写代码很容易,但我宁愿使用标准机制(如果存在).

public OneShot<int> SetOnceProperty { get; set; }

我想要发生的是,如果属性尚未设置,则可以设置属性,但如果之前已设置,则抛出异常.它应该像Nullable值一样运行,我可以检查它是否已设置.

.net c#

63
推荐指数
5
解决办法
3万
查看次数

加载属性延迟加载

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

private Object _MemberValue;

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

        return _MemberValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

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

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

c# vb.net design-patterns lazy-evaluation

4
推荐指数
1
解决办法
3821
查看次数

标签 统计

c# ×2

.net ×1

design-patterns ×1

lazy-evaluation ×1

vb.net ×1