Gemäß MSDN, A static constructor is called automatically to initialize the class before the first instance is created. Daher können Sie keine Parameter senden.
CLR muss ein statischer Konstruktor aufrufen, wie wird es wissen, welche es passieren Parameter?
Verwenden Sie also keinen statischen Konstruktor.
Hier ist die Arbeit für Ihre Anforderung.
public class StaticClass
{
private int bar;
private static StaticClass _foo;
private StaticClass() {}
static StaticClass Create(int initialBar)
{
_foo = new StaticClass();
_foo.bar = initialBar;
return _foo;
}
}
Statische Konstruktoren haben folgende Eigenschaften:
- Ein statischer Konstruktor übernimmt keine Zugriffsmodifikatoren oder Parameter. Ein statischer Konstruktor wird automatisch zu aufgerufen, um die Klasse vor der Erstellung der ersten Instanz zu initialisieren, oder es werden alle statischen Member referenziert.
- Ein statischer Konstruktor kann nicht direkt aufgerufen werden.
- Der Benutzer hat keine Kontrolle darüber, wann der statische Konstruktor im Programm ausgeführt wird.
- Eine typische Verwendung von statischen Konstruktoren ist, wenn die Klasse eine Protokolldatei verwendet und der Konstruktor zum Schreiben von Einträgen in diese Datei verwendet wird.
- Statische Konstruktoren sind auch nützlich, wenn Wrapper-Klassen für nicht verwalteten Code erstellen, wenn der Konstruktor die Loadlibrary Methode aufrufen können.
- Wenn ein statischer Konstruktor eine Ausnahme auslöst, wird sie von der Laufzeitumgebung nicht ein zweites Mal aufgerufen, und der Typ bleibt für der Lebensdauer der Anwendungsdomäne, in der Ihr Programm läuft, nicht initialisiert.
Sie haben es wahrscheinlich aus den falschen Gründen "statisch" gemacht. Redesign. –
Erste Frage ist in der Tat: Warum ist diese Klasse statisch? Selten sollte es sein. –