Complete these tasks to reinforce what you learned in this module.
Baue Konfiguration als Singleton mit Lazy<T>:
- Der Konstruktor ist privat und gibt Konfiguration geladen aus.
- Die statische Eigenschaft Instanz liefert den Wert eines static readonly Lazy<Konfiguration>.
- Die Eigenschaft Mehrwertsteuersatz liefert 8.
Main gibt zuerst Vor dem ersten Zugriff aus, greift dann zweimal auf Instanz zu und vergleicht am Ende mit ReferenceEquals, ob beide Zugriffe dasselbe Objekt geliefert haben.
private static readonly Lazy<Konfiguration> _instanz = new Lazy<Konfiguration>(() => new Konfiguration()); — die Lambda-Factory darf den privaten Konstruktor aufrufen, weil sie innerhalb der Klasse steht. Console.WriteLine gibt für true genau True aus.using System;
public sealed class Konfiguration
{
// TODO: static readonly Lazy<Konfiguration> mit einer Factory,
// die new Konfiguration() aufruft
// TODO: public static Konfiguration Instanz => ...
private Konfiguration()
{
// TODO: "Konfiguration geladen" ausgeben
}
public int Mehrwertsteuersatz
{
get { return 0; } // TODO: 8
}
}
class Program
{
static void Main()
{
Console.WriteLine("Vor dem ersten Zugriff");
// TODO: zweimal auf Konfiguration.Instanz zugreifen,
// je "Satz: {Mehrwertsteuersatz}" ausgeben,
// danach "Gleiche Instanz: {ReferenceEquals(a, b)}"
}
}