2015-07-29 3 views
-1

Я работаю над кодом, написанным на C#. Существует перечисление, скажем, определяются как:C# enum GetValue() method

namespace abc 
{ 
    public enum XYZ 
    { 
     a=0, 
     b=1, 
    } 
} 

Теперь в коде есть переменный, скажем й тип XYZ перечислимого и линия:

var y=x.GetValue(); 

Теперь, когда х 0, т.е. «a», код работает правильно, а y присваивается «a». Но когда это 1, код падает. Я попытался найти метод GetValue, но не смог найти много литературы. Также в определении перечисления есть запятая после «b = 1» в порядке? Пожалуйста, помогите мне.

+3

Что именно вы подразумеваете под «кодом сбоев»? Есть ли исключение? Пожалуйста, покажите короткую, но полную программу, демонстрирующую проблему. –

+0

* «XYZ» не содержит определения для «GetValue» и никакого метода расширения «GetValue», принимающего первый аргумент типа «XYZ» * – EZI

+0

Ошибка была «Случайное исключение исключения» типа System.Collections.Generic.KeyNotFoundException 'произошел в System.Web.Mvc.dll " –

ответ

0

XYZ - это перечисление, оно не имеет значения, вам нужно получить значение нужной вам записи.

var y = XYZ.a 

Перечисление связывает значение с enumaration, если вы хотите наоборот, вы лучше с помощью dictionary, или список KeyValuePair с вместо.

Edit: согласно комментарию, если вы действительно хотите использовать перечисление, вы можете получить доступ к нему «задом», как это так, получая ключ из перечисления:

enum WeekDays { Sun = 1, Mon = 2, Tue, Wed, Thu, Fri, Sat }; 
public void Main(string[] args) 
{ 
    Console.WriteLine(
        ((WeekDays)2).ToString() 
        ); //Prints "Mon" 
} 
+0

C# enums - это просто 'int' под капотом. – whoisj

+0

Переменная x имеет некоторое значение 0. Теперь я думаю, что код намеревается дать строковое значение x, которое является «a» на y методом GetValue(). Я не очень разбираюсь в этом методе (или C# в этом отношении, я только начал работать с C#). –

+2

@whoisj не совсем верно, вы можете определить их, чтобы иметь другой базовый тип, например 'enum foo: byte {x, y, z}' –