Ich habe die folgende Erklärung ab:C# explizite Initialisierung für Enum
private Enum _statusValue;
Was würde ich wirklich sagen möchte, ist:
private Enum _statusValue = 0;
, obwohl ich weiß, dass es überflüssig ist. Ich möchte nur die Initialisierung explizit angeben.
Aber das ist nicht erlaubt.
Gibt es eine einfache Möglichkeit, die Initialisierung für diese Art von Deklaration anzugeben?
EDIT - Lassen Sie es mich noch einmal versuchen.
Hier ist ein erfundenes/vereinfachtes Beispiel für das, was ich mache.
using System;
namespace EnumTesting
{
public enum EFixedPhoneUsability
{
UnknownValue, // Should not occur?
IsUsable, // User is near the telephone
NotUsable, // User not near the telephone
BeingUsed, // Busy
DoNotDisturb, // This is phone physical state, not user attitude
CallsForwarded // This is phone physical state
}
public enum EMobilePhoneConnectivity
{
UnknownValue, // Should not occur?
OnNetIdle, // I.e., usable
OnNetBusy, // Being used
NoConnection // Turned off, in elevator or tunnel or far from civilization
}
public class Program
{
public Enum StatusValue;
static void Main(string[] args)
{
Program p = new Program();
p.StatusValue = EMobilePhoneConnectivity.NoConnection;
int i = (int) (EMobilePhoneConnectivity) p.StatusValue;
p.StatusValue = EFixedPhoneUsability.DoNotDisturb;
i = (int) (EFixedPhoneUsability) p.StatusValue;
}
}
}
Also meine Frage ist, kann ich einen generischen Initialisierer zu dieser Aussage hinzufügen?
public Enum StatusValue;
ZWEITE EDIT:
Es macht nichts, habe ich den Fehler meiner Wege entdeckt, dank dieser Veröffentlichung:
How to convert from System.Enum to base integer?
Der Schlüsselsatz, der mir klar gemacht, was ich war falsch, ist dies: "Aufzählungen sind Werttypen (und intern nur durch ganzzahlige Konstanten dargestellt), während System.Enum ein Referenztyp ist".
So will ich nicht, das sagen:
private Enum _statusValue = 0;
Ich möchte, dies sagen, was völlig in Ordnung ist:
private Enum _statusValue = null;
Sie denen danken, die versucht zu helfen.
'private Enum _statusValue' ist eine Typdefinition. Sie können eine Typdefinition nicht initialisieren. –
Ich glaube nicht, dass das stimmt. Ist es nicht eine Felddefinition? Es funktioniert wie eine Felddefinition - ich kann ihm einen Wert zuweisen, indem ich eine andere Aufzählung benutze, und den Wert von ihm mithilfe eines Cast abrufen. – RenniePet
@RenniePet: Sie können Ihre eigene Frage beantworten und dann akzeptieren. Auf diese Weise wird diese Frage geschlossen. – dvdvorle