什么是延迟初始化。这里是我搜索谷歌后的代码。.NET中的延迟初始化4
class MessageClass
{
public string Message { get; set; }
public MessageClass(string message)
{
this.Message = message;
Console.WriteLine(" *** MessageClass constructed [{0}]", message);
}
}
Lazy<MessageClass> someInstance = new Lazy<MessageClass>(
() => new MessageClass("The message")
);
为什么要用这种方式创建对象......当我们实际上需要用这种方式创建对象......寻找答案时。
当MyProperty属性将被调用时...如果下面一行执行私人懒惰 _myProperty = new懒惰(()=>新的MyClass()); 财产将如何被称为.....我只是不明白,因为我们需要明确地调用属性。 –
Mou
@ user728750我不太确定我明白你在问什么。 '_myProperty'只是一个私有的实例变量。你也可以在包含类的构造函数中初始化它(实际上这可能是更好的练习)。该属性的使用在某种程度上是可选的,但它抽象掉了否则需要的'.Value'调用。 – Andrew
有趣的是,同样的事情可以在Scala中完成,只需 'lazy val MyProperty = new MyClass()'。太糟糕了,他们从来没有为.NET发布一个Scala编译器。 – sparebytes