Ну, этот вопрос 7 лет, пока я пишу свой ответ.Я все еще хочу написать это, может быть, это будет кому-то полезно позже.
Изменение значений перечисления во время выполнения невозможно, но есть способ поиграться, приведя переменную int к enum и определив эти целыесо значениями в словаре, как показано ниже:
// Define enum TestType without values
enum TestType{}
// Define a dictionary for enum values
Dictionary<int,string> d = new Dictionary<int,string>();
void Main()
{
int i = 5;
TestType s = (TestType)i;
TestType e = (TestType)2;
// Definging enum int values with string values
d.Add(2,"Aphasia");
d.Add(5,"FocusedAphasia");
// Results:
Console.WriteLine(d[(int)s]); // Result: FocusedAphasia
Console.WriteLine(d[(int)e]); // Result: Aphasia
}
Таким образом, у вас есть динамический словарь для значений перечисления без каких-либо записанных внутри него.Если вам нужно какое-либо другое значение для перечисления, вы можете создать метод для его добавления:
public void NewEnumValue(int i, string v)
{
try
{
string test = d[i];
Console.WriteLine("This Key is already assigned with value: " +
test);
}
catch
{
d.Add(i,v);
}
}
Итак, ваш последний используемый код должен быть таким:
// Define enum TestType without values
enum TestType{}
// Define a dictionary for enum values
Dictionary<int,string> d = new Dictionary<int,string>();
public void NewEnumValue(int i, string v)
{
try
{
string test = d[i];
Console.WriteLine("This Key is already assigned with value: " +
test);
}
catch
{
d.Add(i,v);
Console.WriteLine("Addition Done!");
}
}
void Main()
{
int i = 5;
TestType s = (TestType)i;
TestType e = (TestType)2;
// Definging enum int values with string values
NewEnumValue(2,"Aphasia");
NewEnumValue(5,"FocusedAphasia");
Console.WriteLine("You will add int with their values; type 0 to " +
"exit");
while(true)
{
Console.WriteLine("enum int:");
int ii = Convert.ToInt32(Console.ReadLine());
if (ii == 0) break;
Console.WriteLine("enum value:");
string v = Console.ReadLine();
Console.WriteLine("will try to assign the enum TestType with " +
"value: " + v + " by '" + ii + "' int value.");
NewEnumValue(ii,v);
}
// Results:
Console.WriteLine(d[(int)s]); // Result: FocusedAphasia
Console.WriteLine(d[(int)e]); // Result: Aphasia
}