2013-04-04 70 views
0
public enum eEstado 
{ 
    Active = 3, 
    Inactive = 4 
} 

我需要为枚举属性设置不同的名称(如别名)。例如,对于“Activo”,像“Activo”等等。另外我需要从值(3或4)中获取该字符串。枚举类型C的别名#

谢谢。

+0

看到http://stackoverflow.com/questions/630803/associating-enums-with-strings-in-c-sharp – mpen 2013-04-04 22:44:44

+0

@马克,的确,但我会建议答案#2。最高票数的答案是奇怪无关的。 – 2013-04-04 22:45:32

+0

至于OP的问题的第二部分,答案是((eEstado)3).ToString()'。 – 2013-04-04 22:46:23

回答

3

要从别名转换为枚举值:

public static eEstado AliasToEstado(string alias) 
{ 
    switch(alias) 
    { 
     case "Activo": return eEstado.Active; 
     case "Inactivo": return eEstado.Inactive; 
     default: throw new ArgumentException(alias); 
    } 
} 

从一个枚举值转换为一个别名:

public static string EstadoToAlias(eEstado value) 
{ 
    switch(value) 
    { 
     case eEstado.Active: return "Activo"; 
     case eEstado.Inactive: return "Inactivo"; 
     default: throw new ArgumentException(value); 
    } 
} 

从int值转换成一个别名:

int value = 3; 
string alias = EstadoToAlias((eEstado)value); 
-2

您可以在枚举中使用任何名称,但不能使用枚举字符串

public enum eEstado 
{ 
// its an valid enum 
    Activo = 3, 
    Inactivo = 4 
} 

,并使用枚举像串

,你可以把它转换成字符串

EXM。

strinf s=eEstado.Activo.ToString(); 

然后

if(s==eEstado.Activo.ToString()) 
{ 
    // do sumthing 
} 
在此

的'不会3的值。它会“ACTIVO” 我认为它会为

欢迎你帮助你的感谢的

好运

+0

这既不支持多个字符串值,也不会将int转换为字符串。 (不,比较枚举与字符串表示形式的每种可能性都不计算在内) – 2013-04-04 22:49:35

+0

你想'Activo'是3吗? – 2013-04-04 22:52:12

3

这是很难明白你问什么,但我认为这将帮助:

您可以对具有相同值的多个名称的enum像:

public enum Status 
{ 
    Undefined = 0, 
    Active = 1, 
    Inactive = 2, 
    Default = Active 
} 

哟ü可以从一个字符串解析与

static void Main(string[] args) 
{ 
    Status status = Status.Default; 

    string new_status = "Inactive"; 

    status = (Status)Enum.Parse(typeof(Status), new_status); 

    Console.WriteLine(status.ToString()); 
    // prints "Inactive" 

    status = (Status)1; 
    Console.WriteLine(status.ToString()); 
    // prints "Active" 

}