2012-01-18 85 views
-3

我试图从一个int转换为一个枚举,未果,如下:铸造从int到枚举仍返回一个int

ENUM

public enum ePriceType{ 
    Fixed = 1, 
    Variable = 2 
} 

CAST

public int priceTypeA = 2; 
public ePriceType priceTypeB = (ePriceType)priceTypeA; 

代码运行正常,但是当你检查priceTypeB的价值某些原因,它仍显示int而不是ePriceType,这会导致代码进一步下降。

任何人都可以帮忙吗?

UPDATE

事实上,这个问题是一个整体复杂得多,涉及Web服务的客户端。我试图简化它上面一样,但显然didnt相当的工作,林不知道如何最简单的解释完全问题:(谢谢您的回答无论如何

+2

请出示产生错误的代码。 – 2012-01-18 12:58:26

+5

进一步下降的错误是什么?你如何“检查”价值? – 2012-01-18 12:58:32

+3

其他事情正在发生。请多一点代码。 – 2012-01-18 13:00:15

回答

3

当您检查priceTypeB的值仍显示一个int

不知道你是如何检查此值,并在那里为什么你看到一个int但下面的检查工作完全正常:

public enum ePriceType 
{ 
    Fixed = 1, 
    Variable = 2 
} 

class Program 
{ 
    static void Main() 
    { 
     int priceTypeA = 2; 
     ePriceType priceTypeB = (ePriceType)priceTypeA; 
     if (priceTypeB == ePriceType.Variable) 
     { 
      Console.WriteLine("Variable"); 
     } 
    } 
} 
+0

'不知道你是如何检查这个值,在哪里' - 我添加了一个断点并检查了从那里的值:) – Jimbo 2012-01-18 13:57:22

0

试试这个:

public class EnumProvider 
{ 
    public enum ePriceType{ 
    Fixed = 1, 
    Variable = 2 
} 

var a = Enum.GetName(typeof(EnumProvider.ePriceType), 1); 

这里将被“固定”

+0

为什么在类中包装枚举? – 2012-01-18 13:21:06

+0

没必要把它包装在一个类中,我们也可以把它放在同一个类中 – 2012-01-18 13:24:15