Statisches privates Datenmitglied in statischer Klasse nicht initialisiert?
-
24-12-2019 - |
Frage
Angesichts des C # -Codes unten erwartete ich, dass das private Datenmitglied _userdataTatorage sofort initialisiert werden soll.Stattdessen finde ich, dass es überhaupt nicht initialisiert wird ist.Ich lege einen Haltepunkt auf die Initialisierungsanweisung und es wird nie getroffen.Dies bedeutet, dass das db statische Eigenschaft immer NULL zurückgibt.Arbeiten statische Klassen anders als nicht statische Klassen?
generasacodicetagpre.Ich werde den Code ändern, um nach Null zu suchen und _userdatustorage selbst vorerst zu initialisieren.Aber ich möchte hier sicher sein, meine Erwartungen hier.
Lösung
Versuchen Sie versuchen, einen statischen Konstruktor hinzuzufügen, und initialisieren Sie die Variable innen.
generasacodicetagpre. " Wenn ein statischer Konstruktor in der Klasse vorhanden ist, erfolgt die Ausführung der
Andere Tipps
Da es sich um einen statischen Initialisierer handelt, wird er " mit einer implementierungsabhängigen Zeit vor der ersten Verwendung eines statischen Felds dieser Klasse " initialisiert. Quelle
Ihr Haltepunkt kann also nicht getroffen werden , es sei denn, Sie verwenden, wenn Sie dieses Feld (oder ein anderes statisches Feld in dieser Klasse) verwenden.
Für Vollständigkeit kann ich hinzufügen, wenn ein statischer Konstruktor vorhanden ist, die statischen Feldinstitiergeräte vor dem statischen Konstruktor ausgeführt werden.