2016-01-29 2 views
-1

У меня есть это перечисление:Можно ли вернуть перечисление из метода?

enum ControlsId 
    { 
     f1, 
     f2 
    } 

И я хочу, чтобы вернуть тип перечисления из функции, например:

public enum GetPostBackControlId(string str) 
    { 
      if(str = "btn1") 
      return ControlsId.f1 
      if(str = "btn2") 
      return ControlsId.f2 
    } 

Можно ли вернуть перечисление от метода?

ответ

6
public ControlsId GetPostBackControlId(string str) 
{ 
     if(str == "btn1") 
     { 
     return ControlsId.f1; 
     } 
     else if(str == "btn2") 
     { 
     return ControlsId.f2; 
     } 
     return (ControlsId)17; 
} 
+3

Это верно, но обратите внимание, что вы получите ошибку компилятора, чтобы не все пути возвращали значение. –

+1

также эти назначения должны быть сравнения –

+0

Извините, я только что скопировал код из вопроса. Исправлена. Танки. – MobileX

2

Я знаю, что ответ уже существует, но что-то, что может быть немного чище.

public TEnum GetEnum<TEnum>(string content) 
{ 
    return (TEnum)Enum.Parse(typeof(TEnum), content, true); 
} 

Красота этого метода, является универсальной и очень многоразовой. Пока значение существует, оно будет анализироваться в действительном enum. В противном случае это вызовет исключение. Но если вы намерены разобраться в enum, вы, как правило, знаете тип.

Смежные вопросы