Warum ist es nicht möglich, eine Öffentliche Var?
Ich bin versucht, in der folgenden öffentlichen var:
var collection = new Dictionary<string, Statistics>();
Ich möchte in der Lage sein, die Verwendung der gleichen Sammlung, die alle durch meine Bewerbung und ich möchte daher, um es zu schaffen ganz an die Spitze, wenn die Anwendungen startet.
Wie kann ich dies tun?
- Sorry ich war nicht klar genug. Ich möchte alle meine Form1 hinzu.cs auf ihn zugreifen, nicht anders .cs-Dateien 🙂
var
können nur verwendet werden für die lokalen Variablen. Verwenden Sie einfach den Namen eintippenDictionary<string, Statistics>
an seinem Platz.- Ich schlage vor, Sie Bearbeiten Ihre Frage dann, als "alle durch meine Bewerbung" hat definitiv eine andere Bedeutung.
- Hätte ich gesehen, Ihr erklärender Kommentar erwähnt, ich würde keine Anstrengungen unternommen, um wertvolle Antwort auf eine völlig und ganz andere Frage. Bitte korrigieren Sie Ihre Frage, und die nächste Zeit genauer Wortlaut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist kein Konzept für eine Globale variable in C#. Sie immer zu deklarieren variable innerhalb einer Klasse/Bereich.
Was Sie kann tun, ist, es zu machen zugänglich über
public
modifier, wie eine Eigenschaft (sagen).Nur eine Idee:
Nachdem Sie auf Sie zugreifen können wie:
Muss man trainieren, indem Sie sich selbst, was passt Ihre Bedürfnisse.
Können Sie erstellen Sie ein öffentliches statisches Feld oder eine Eigenschaft im public-Klasse (Optional auch statische):
Dann der Zugriff im code:
Beachten Sie, dass es ist nicht thread-safe Ansatz. Also, wenn Sie beabsichtigen, die Verwendung von statischen Wörterbuch bei multithreading-app, ist es besser, entweder haben statische Methoden, die wraping das Wörterbuch in thread-sicheren Art und Weise (wie Jon Skeet genannt) oder verwenden Sie thread-safe collections, exapmle Z. B. concurrentdictionary.
Dictionary<,>
einfach nicht. Es wäre besser, statische Methoden für die erforderlichen Operationen, wickelt das Wörterbuch in einer thread-sicheren Weise. Es wäre besser noch zu vermeiden, die Statik an Erster Stelle natürlich...Die Fehlermeldung, die Sie bekommen ist:
Ich glaube, Sie werden versuchen, zu definieren, Ihre Sammlung:
Können Sie nicht verwenden
var
Schlüsselwort auf dieser Ebene,Können Sie definieren, wie:
Wird es verfügbar sein, um alle Methoden innerhalb der Klasse Form1
BEARBEITEN
Den Kommentaren der OP zeigte sich, dass die Anforderung ist nur in der Lage sein, um Zugriff auf die variable durch den einen .cs-code. Bitte ignorieren Sie die folgenden, und bitte Stimme löschen, wenn Sie denken, dass diese Antwort nicht eine wertvolle Ergänzung, um die Frage für zukünftige Besucher von diesem Thema. Oder Stimmen, wenn Sie denken, es ist genug Mehrwert zu bleiben.
, Was ich meinte für die ursprüngliche Frage, bezüglich
I want to be able to use the same collection all through my application
In einer Objekt-orientierten Umgebung, wenn dies eine Anforderung, dass kann nicht übertroffen werden durch die Umgestaltung/Umstrukturierung der Anwendung ist, sollten Sie auf jeden Fall verwenden Sie die Singleton-design-Muster
Singleton ist ein pattern, das garantiert, dass nur eine Instanz der angegebenen Klasse existiert (pro Anwendung contex/virtuelle Maschine, natürlich), und dass diese Instanz zugegriffen werden kann von überall im Kontext derselben Anwendung.
Ist:
Beispiel: (aus der C# - in-Depth-link, zweite version, mit einfachen thread-Sicherheit, beachten Sie, wer der Autor des Artikels ist!!!)
VORSICHT immer nehmen Sie die thread-Sicherheit zu zählen!
Da bekam ich eine Antwort von @JonSkeet (Huch!), Ich glaube, ich habe zu erklären, die Gründe für meine Antwort:
Vorteile:
Nachteile:
Auch zum Lesen empfohlen:
Singleton Orchestrations
im BizTalk).