Co to jest leniwy inicjalizacji. Oto kod, który otrzymałem po szukaniu google.Lazy inicjalizacji w .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")
);
dlaczego powinienem tworzyć obiekt w ten sposób ... kiedy faktycznie musimy stworzyć obiekt w ten sposób ...... szukając odpowiedzi.
gdy myProperty nieruchomość będzie się nazywać ... jeśli się następujący wiersz wykonać prywatną Lazy _myProperty = new Lazy (() => nowa MyClass()); jak będzie się nazywać własność ..... po prostu nie rozumiem, ponieważ musimy wywoływać własność zawsze jawnie. –
Mou
@ user728750 Nie jestem pewien, czy rozumiem, o co prosisz. '_myProperty' to po prostu prywatna zmienna instancji. Możesz również zainicjować go w konstruktorze klasy zawierającej (co może być lepszą praktyką, faktycznie). Użycie tej właściwości jest nieco opcjonalne, ale usuwa streszczenie ".Value", które w przeciwnym razie byłoby potrzebne. – Andrew
Zabawne, że to samo można osiągnąć w Scali tylko za pomocą 'lazy val MyProperty = new MyClass()'. Szkoda, że nigdy nie dostali się do wydania kompilatora Scala dla .Net. – sparebytes