Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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# 如何在C中创建一个惰性属性,将类的字符串属性作为参数传递给它?_C#_Lazy Initialization - Fatal编程技术网

C# 如何在C中创建一个惰性属性,将类的字符串属性作为参数传递给它?

C# 如何在C中创建一个惰性属性,将类的字符串属性作为参数传递给它?,c#,lazy-initialization,C#,Lazy Initialization,是否有方法将Name属性作为参数传递给延迟BOM表初始化 public class Item { private Lazy<BOM> _BOM = new Lazy<BOM>(); // How to pass the Name as parameter ??? public Item(string name) { this.Name = name; } public string Name {

是否有方法将Name属性作为参数传递给延迟BOM表初始化

public class Item
{
    private Lazy<BOM> _BOM = new Lazy<BOM>(); // How to pass the Name as parameter ???

    public Item(string name)
    {
        this.Name = name;         
    }
    public string Name { get; private set; }
    public BOM BOM { get { return _BOM.Value; } }
}

public class BOM
{
    public BOM (string name)
    {
    }
}
您可以使用Lazy来实现这一点。这也意味着,正如Zohar的评论所建议的那样,实例化必须移动到构造函数中,因为非静态字段不能从字段初始值设定项引用

public class Item
{
    private Lazy<BOM> _BOM;

    public Item(string name)
    {
        this.Name = name;
        _BOM = new Lazy<BOM>(() => new BOM(Name));
    }
    public string Name { get; private set; }
    public BOM BOM { get { return _BOM.Value; } }
}

public class BOM
{
    public BOM(string name)
    {
    }
}
您可以使用Lazy来实现这一点。这也意味着,正如Zohar的评论所建议的那样,实例化必须移动到构造函数中,因为非静态字段不能从字段初始值设定项引用

public class Item
{
    private Lazy<BOM> _BOM;

    public Item(string name)
    {
        this.Name = name;
        _BOM = new Lazy<BOM>(() => new BOM(Name));
    }
    public string Name { get; private set; }
    public BOM BOM { get { return _BOM.Value; } }
}

public class BOM
{
    public BOM(string name)
    {
    }
}

不要实例化Lazy at声明,而是在Item的构造函数中实例化它:


不要实例化Lazy at声明,而是在Item的构造函数中实例化它:


该死快了半分钟!:-@ZoharPeled我喝的咖啡太多了我还不够:-该死!快了半分钟!:-@ZoharPeled我喝了太多咖啡我喝得不够:-