Quello che chiedi non ha niente a che fare con quelle costanti che fanno parte di un caso switch
. Se vuoi ottenere il nome della costante Bullet_Power_1
come stringa letterale ovunque nel tuo programma quando conosci solo il valore, la soluzione più semplice a cui riesco a pensare è creare un dizionario per contenere il coppie chiave / valore in anticipo:
var constNames = new Dictionary<string,string>()
{
{Bullet_Power_1,"Bullet_Power_1"},
{Bullet_Power_2,"Bullet_Power_2"}
// ...
};
(tieni presente che presumo che il tuo costante Bullet_Power_1
non contenga già il valore "Bullet_Power_1"
, altrimenti questo sarebbe superfluo, sarebbe utile se vuoi confermare questa ipotesi).
Ora, ogni volta che devi cercare il nome costante Bullet_Power_1
, puoi scrivere
string foo=constNames[Bullet_Power_1];
o nel tuo caso sopra
remainingUpgrades.Remove(constNames(upgrade));
In C # 6, è possibile utilizzare nameof
per riempire il dizionario:
var constNames = new Dictionary<string,string>()
{
{Bullet_Power_1,nameof(Bullet_Power_1)},
{Bullet_Power_2,nameof(Bullet_Power_2)}
// ...
};
Il vantaggio è che questo eviterà una modifica accidentale del nome della costante (ad esempio, utilizzando il refactoring dei nomi di Visual Studio), in cui si potrebbe anche dimenticare di modificare anche il valore della stringa.