c#把字符串转枚举,Enum.Parse()。报错。是不是缺乏某个头文件?
enumAnimal{Dog=0,Cat=1,Mouse=2}staticvoidMain(string[]args){stringstr=Console.ReadLin...
enum Animal
{ Dog = 0, Cat = 1, Mouse = 2 }
static void Main(string[] args)
{
string str = Console.ReadLine();
Animal a=(Animal)(Enum.Parse(typeof(Animal),str));
switch (a)
{
case Animal.Dog: Console.WriteLine("狗"); break;
case Animal.Cat: Console.WriteLine("猫"); break;
case Animal.Mouse: Console.WriteLine("鼠"); break;
default: break;
} 展开
{ Dog = 0, Cat = 1, Mouse = 2 }
static void Main(string[] args)
{
string str = Console.ReadLine();
Animal a=(Animal)(Enum.Parse(typeof(Animal),str));
switch (a)
{
case Animal.Dog: Console.WriteLine("狗"); break;
case Animal.Cat: Console.WriteLine("猫"); break;
case Animal.Mouse: Console.WriteLine("鼠"); break;
default: break;
} 展开
2个回答
追问
哦,我在Enum.Parse(typeof(Animal),前面加上个 System 就可以了。
Animal a=(Animal)(System.Enum.Parse(typeof(Animal),str));
这是为什么啊?
追答
我只是推测的:C#编译器会先在你的当前程序集内找类型,然后才去系统的dll里面去找。你原先写的是Enum,而你的程序的命名空间恰好是Enum,因此系统就找不到这个类型。而现在你加了个System,编译器在你的程序里面没找到System开头的,所以就去系统的dll里去找,找到了。不信你把你的命名空间改成System.Enum试试。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询