Ich habe eine case-Anweisung in C#. Ich möchte die Werte für die Fälle aus einer Konfigurationsdatei zur Laufzeit auswählen. Ist das möglich?Switch Over Wert bestimmt zur Laufzeit in C#
Antwort
Nicht mit einer switch-Anweisung, nein. Die Case-Labels müssen Kompilierzeitkonstanten sein.
Marc Gravell hat ein Switch-ähnliches Konstrukt, das Sie verwenden könnten, irgendwo ... Ich werde versuchen, es zu finden. Es kann jedoch nicht für Ihre spezielle Verwendung geeignet sein.
Ansonsten ist eine Sequenz von if/else if/else wenn [...]/else der Weg ist.
Da die Werte, die in einer case-Anweisung in C# verwendet werden, Konstanten sein sollten, ist es meines Erachtens nicht möglich, diese zur Laufzeit aus einer Konfigurationsdatei zu setzen.
Wie andere bereits gesagt haben, benötigt die switch-Anweisung die Werte zur Kompilierzeit, da die zugrunde liegende Hashtabelle zur Kompilierzeit erstellt wird. Wenn Sie Einträge haben, die zur Laufzeit bestimmt werden, würde ich Hashtabellen/Wörterbücher mit Befehlsmuster oder Delegaten verwenden, wenn ich Sie wäre.
- 1. Objective C - bestimmt Klassentyp zur Laufzeit
- 2. Umwandlung in eine Klasse, die zur Laufzeit bestimmt wird
- 3. Neuen Enum-Wert zur Laufzeit
- 4. Umwandlung in eine Klasse, die zur Laufzeit bestimmt wird
- 5. C++ Weisen Sie zur Laufzeit einen const-Wert zu?
- 6. Wert zuweisen, um DataGridview Zelle zur Laufzeit in C#
- 7. Änderung des Prozessnamens zur Laufzeit (C++)
- 8. kann die Größe des Arrays zur Laufzeit in c bestimmt werden?
- 9. Dynamisch C# Eigenschaften zur Laufzeit
- 10. C# Override-Methode zur Laufzeit
- 11. C# Hinzufügen einer Schaltfläche mit Wert zur Laufzeit
- 12. create C# -Projekt zur Laufzeit
- 13. C: Compiler-Info zur Laufzeit
- 14. C++ Ressourcen zur Laufzeit ändern
- 15. C#: Methode zum Zurückgeben eines Objekts, dessen konkreter Typ zur Laufzeit bestimmt wird?
- 16. Erkennen von Bibliotheksfunktionen zur Laufzeit in C
- 17. Loading DLLs zur Laufzeit in C#
- 18. ListBox-Elemente zur Laufzeit in C# ändern
- 19. Einstellung Enumerationswert zur Laufzeit in C#
- 20. ändern Wert von guice Instanz zur Laufzeit
- 21. Wie bekomme ich den Wert für 'Option Compare' zur Laufzeit?
- 22. Objective-C Parameter zur Methode zur Laufzeit ändern
- 23. Variable Array-Dimension zur Laufzeit C++
- 24. C#, ASP.NET 3.5 - Code zur Laufzeit laden
- 25. C# DataContractJsonSerializer Felder zur Laufzeit ausschließen
- 26. C# Aktivieren/Deaktivieren der Netzwerkablaufverfolgung zur Laufzeit?
- 27. C# Hinzufügen von Referenzen zur Laufzeit
- 28. Dynamische Erstellung einer C++ - Funktionsargumentliste zur Laufzeit
- 29. C# überprüfen Silverlight Objektgröße zur Laufzeit
- 30. MySql - Switch-Wert
Das war, wovor ich Angst hatte! Vielleicht werde ich stattdessen nur eine if-Anweisung verwenden. – macleojw
Richtig, das ist in VB.NET nicht der Fall, da kann es eine Variable geben! – MrEdmundo
Dieser? Hinweis Ich habe nur die Idee - nicht den Code ... Persönlich, ich würde nur uns "wenn" etc hier; -p http://stackoverflow.com/questions/156467/switch-pattern-matching-idea –