C# 如何从“name”的字符串表示形式中选择枚举值?

C# 如何从“name”的字符串表示形式中选择枚举值?,c#,enums,C#,Enums,我有这样的枚举 public enum PetType { Dog = 1, Cat = 2 } 我也有宠物狗。如何返回1?我考虑的伪代码是: select Dog_Id from PetType where PetName = pet 使用Enum.Parse方法从字符串中获取枚举值,然后转换为int: string pet = "Dog"; PetType petType = (PetType)Enum.Parse(typeof(PetType), pet); int p

我有这样的枚举

public enum PetType
{
    Dog = 1,
    Cat = 2
}
我也有宠物狗。如何返回1?我考虑的伪代码是:

select Dog_Id from PetType where PetName = pet
使用Enum.Parse方法从字符串中获取枚举值,然后转换为int:

string pet = "Dog";
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet);
int petValue = (int)petType;

如果您使用的是.NET4,则可以使用


其他人已经建议使用Enum.Parse,但要小心使用此方法,因为它不仅解析Enum的名称,还尝试匹配其值。 为了清楚起见,让我们看一个小例子:

PetType petTypeA = (PetType)Enum.Parse(typeof(PetType), "Dog");
PetType petTypeB = (PetType)Enum.Parse(typeof(PetType), "1");
两个解析调用的结果都将是PetType.Dog,当然可以将其强制转换为int


在大多数情况下,这样的行为是可以的,但并不总是可以,这值得记住Enum.Parse方法的行为。

您可以使用字符串作为参数,如

int pet=1;
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet.ToString());


如果您已经拥有该编号,则可以将其强制转换为枚举值:petType=PetType1yes对,这是另一种方式显示结果,此答案在其他注释中
PetType petTypeA = (PetType)Enum.Parse(typeof(PetType), "Dog");
PetType petTypeB = (PetType)Enum.Parse(typeof(PetType), "1");
int pet=1;
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet.ToString());
string pet="Dog";
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet);