Globale variable in einer statischen Methode
Dies scheint einfach, aber Im der Suche nach diesem ganz trivial. Einfach wie würden Sie empfehlen, eine Globale variable mit einer statischen Klasse (d.h. Konsole-Anwendung)?
Geben Sie ein wenig mehr hintergrund-die main-Methode ruft einen benutzerdefinierten Event-Handler, die ich hoffe Lesen /setzen der Variablen.
Irgendwelche Ideen oder Vorschläge, die Sie haben ist geschätzt.
Ich persönlich würde empfehlen das löschen der Begriff "Globale variable" aus Ihrem Wortschatz.
für die Zukunft, etwas, das trivial ist, ist etwas zu einfach.
für die Zukunft, etwas, das trivial ist, ist etwas zu einfach.
InformationsquelleAutor Leroy Jenkins | 2010-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Weg ist
schafft ein öffentliches statisches Feld. Ein wenig besser ist:
Schafft eine öffentliche statische Eigenschaft.
stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-3-0/653799
Ich kenne den Unterschied, aber sind statische Eigenschaften, die Objektiv besser sind als statische Felder?
für öffentliche Daten, ja.
InformationsquelleAutor Samuel Neff
Gibt es keine globalen Variablen in C#. Eine variable ist immer lokal beschränkt. Die grundlegende Einheit des code ist die Klasse und innerhalb einer Klasse Felder, Methoden und Eigenschaften.
Du kann imitieren eine "Globale variable", indem Sie ein öffentliches statisches Feld oder eine Eigenschaft in einer Klasse, aber Sie sollte nicht. C# macht das schwierig für einen sehr guten Grund; Globale Variablen sind das pure böse. Sie verletzen einige gute Prinzipien des OO-Entwurfs - Kapselung, lose Kopplung und hohe Kohäsion, um nur einige zu nennen.
Ich weiß, das ist eine Anfänger-Frage, aber ich denke, es ist weil das ist eine Anfänger-Frage, es ist so wichtig zu sagen. Jetzt ist die beste Zeit, um anzufangen zu lernen, was Taktik sind aktiv entmutigt oder sogar gefährlich in C# und unter Verwendung eines statischen Feldes/Eigenschaft wie eine Globale variable ist etwa sechs von Ihnen. Es gibt legitime verwendet für diese Konstrukte, aber die Weitergabe der Daten rund um von Ort zu Ort ist nicht einer von Ihnen.
Wenn zwei verschiedene Klassen sind abhängig von der gleichen Informationen, dann übergeben Sie die Informationen von der Quelle zum Ziel. Dies geschieht in der Regel entweder durch den Konstruktor oder als argument an die Methode aufgerufen wird. Sie sollten immer nur eine Instanz, die wirklich "besitzt" diese Informationen; Bereitstellung von Informationen "global" bedeutet, dass Sie nicht Grund, über wer oder was sein könnte, je nachdem es an irgendeinem gegebenen Punkt in der Zeit.
Bitte beachten Sie dies, und versuchen Sie, denken über andere Möglichkeiten, Sie könnten die Informationen, die Sie speichern möchten, in eine Globale variable (d.h., indem es als argument für einen Konstruktor oder eine Methode). Wenn du nicht sicher bist, poste ein Beispiel von dem, was Sie zu tun versuchen, und wir werden helfen.
Angenommen, ich habe ein paar der threads, die gleichzeitig laufen und Weg von den Haupt-thread und jetzt, wenn ein Fehler in einem dieser threads, möchte ich erhöhen Sie die Anzahl Fehler. Wie wäre das dann getan?
Das ist nicht wirklich genug Informationen, um eine Lösung zu empfehlen. Was sind threads? Warum würden Sie nicht? Was sind die Konsequenzen des Versagens? Was genau ist der Punkt zählen, im Gegensatz zu protokollieren oder nehmen einige follow-up-Aktion? Sie sollten klären Ihr problem und stellen Sie eine neue Frage.
^ In meinem Fall bin ich die Inkrementierung der Zähler mit jeder thread, der erstellt wird, und dann Dekrementieren, wenn jeder beendet hat, und wartet darauf, alle zu beenden, bevor der Ausführung eines anderen Befehl.
InformationsquelleAutor Aaronaught
Nicht 100% sicher, aber Sie könnten versuchen, ein singleton zu halten Ihre Variablen. Ohne zu wissen, was Sie versuchen zu erreichen, es ist schwer zu empfehlen, wenn diese Lösung würde nicht beißen Sie die Straße hinunter.
http://www.yoda.arachsys.com/csharp/singleton.html
InformationsquelleAutor Tone