Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在get参数方法中创建实例?已知模式还是?_C#_Tree_Parent Child_Parent_Getproperty - Fatal编程技术网

C# 在get参数方法中创建实例?已知模式还是?

C# 在get参数方法中创建实例?已知模式还是?,c#,tree,parent-child,parent,getproperty,C#,Tree,Parent Child,Parent,Getproperty,最近,我采用了一种简便的方法来确保树状结构成员了解其父节点: private metaCollection<metaPage> _servicePages; /// <summary> /// Registry of service pages used by this document /// </summary> [Category("metaDocument")] [DisplayName("servicePages")] [Description("R

最近,我采用了一种简便的方法来确保树状结构成员了解其父节点:

private metaCollection<metaPage> _servicePages;
/// <summary>
/// Registry of service pages used by this document
/// </summary>
[Category("metaDocument")]
[DisplayName("servicePages")]
[Description("Registry of service pages used by this document")]
public metaCollection<metaPage> servicePages
{
    get
        {
        if (_servicePages == null) {
            _servicePages = new metaCollection<metaPage>();
            _servicePages.parent = this;
        }
        return _servicePages;
    }
}
其概念是在property get方法中为私有字段创建实例

我想知道这个图案是否有一些共同的名字? 更重要的是:这种做法是否存在已知问题/不良影响


谢谢

是的,它被称为延迟初始化。从上的示例:

延迟初始化

主要条款:

通过延迟初始化,要延迟加载的对象最初设置为null,每个对象请求都会检查null并在第一次返回之前动态创建它,如下面的C示例所示:

private int myWidgetID;
private Widget myWidget = null;

public Widget MyWidget 
{
    get 
    {
        if (myWidget == null) 
        {
            myWidget = Widget.Load(myWidgetID);
        }    

        return myWidget;
    }
}

与你的问题有点相关注意关于惰性初始化的部分:我能感觉到你的兴奋,但是不,这没有一个通用的名称,也不是一种模式,因为你看到a它没有被广泛使用,b只有你知道它,这是相当琐碎的。我对你们的概念感到困惑,只有你们知道它-对我来说,似乎不可能没有人面对树的一致性问题,并像这样解决它。另一方面,如果这是真的,你说没有人使用这个/它不广泛-我甚至更担心以后可能出现的潜在问题。有时这是非常有用的,特别是在一个集合访问器中,你想过滤更改以选择叶子。请注意并发性问题。