Warum kann ich keine "Konstante" innerhalb einer switch-Anweisung innerhalb des Aufgabenbereichs?
Mit diesem code:
public partial class Form1 : Form
{
private static readonly int TABCONTROL_BASICINFO = 0;
private static readonly int TABCONTROL_CONFIDENTIALINFO = 1;
private static readonly int TABCONTROL_ROLESANDSECURITY = 2;
private static readonly int TABCONTROL_INACTIVEINFO = 3;
. . .
int ActiveTabPage = tabControlWorker.SelectedIndex;
switch (ActiveTabPage) {
case TABCONTROL_BASICINFO:
if (currentNode == "NodeBuckingham") {
} else if (currentNode == "NodeNamath") {
} else if (currentNode == "NodeParsons") {
} else {
}
break;
...Ich habe zu ersetzen "TABCONTROL_BASICINFO" mit "0" oder ich bekomme", Ein konstanter Wert ist
erwartet"
Himmel, Murgatroyd! Kann es nicht schauen und sehen, dass TABCONTROL_BASICINFO 0 ist?
- Frustrierend, nicht wahr! Musst ein Aktuelles const anstatt die readonly-Statik 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, machen es zu einem Konstanten Ausdruck, wie weit die compiler betrifft, erklären Sie als
const
:Oder Folgen .NET Namenskonventionen...
Oder Verwendung einer enum-angesichts der Tatsache, dass Sie haben im Grunde bekam einen festen Satz von Werten:
Übrigens, Sie können auch switch auf strings in C#, also diese:
Werden können:
Einen
readonly
variable ist nicht konstant. Der Wert wird zur Kompilierzeit nicht bekannt, sondern kann initialisiert werden, entweder in der Erklärung (wie Sie getan haben) oder in die Klasse Konstruktor (in diesem Fall der statische Konstruktor für deine Klasse).Mehr siehe
http://msdn.microsoft.com/en-us/library/acdd6hb7(v=vs. 71).aspx
Können Sie es zu ändern:
Es sei denn, Sie benötigen, um zu berechnen, etwas, das zum initialisieren der Variablen, deklarieren Sie Sie als
const
. Es wird etwas effizienter.Ist keine Konstante; es ist ein nur-lese-variable. Wenn Sie wollen, dass es eine Konstante, dann markieren Sie es als eine Konstante.
Oder noch besser:
enum
erscheinen würde, um die richtige Struktur.Static readonly ist nicht eine Konstante variable. Es kann initialisiert werden. In der Erwägung, dass "const" ist konstant.