An sottoutilizzate (ma perfettamente valida) la tecnica è da usare una classe che definisce un insieme di costanti. Come classe, puoi aggiungere proprietà aggiuntive che possono descrivere altri aspetti del valore enumerato. Curiosamente, questo è il modo in cui la maggior parte delle enumerazioni è implementata in Java (che non ha una parola chiave speciale per loro).
Se si segue questo percorso, è generalmente consigliabile rendere la classe sigillata e definire un costruttore privato, in modo che solo la classe stessa possa definire le istanze. Ecco un esempio:
public static class Position
{
private PlayerPosition (string name, bool isDefensive) {
this.Name = name
this.IsDefensive = isDefensive ;
}
// any properties you may need...
public string Name { get; private set; }
public bool IsDefensive { get; private set; }
public bool IsOffensive { get { return !IsDefensive; } }
// static instances that act like an enum
public static readonly Quarterback = new PlayerPosition("Quarterback", false);
public static readonly Runningback = new PlayerPosition("Runningback", false);
public static readonly Linebacker = new PlayerPosition("Linebacker", true);
// etc...
}
Utilizzando tali risultati un enum nella sintassi più elegante e più semplice di attributi:
if(PlayerPosition.Quarterback.IsDefensive)
{
// ...
}
E 'una domanda interessante, anche se si sta cercando enumerazioni abuso, ho una domanda in cambio ... Perché non utilizza un giocatore di classe con proprietà sia per la posizione e se sono sulla squadra difensiva o offensiva? – Lazarus