从int到Enum的转换仍然返回一个int

时间:2012-01-18 12:57:31

标签: c# casting enums

我正在尝试从int转换为枚举,但未成功,如下所示:

ENUM

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

CAST

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

代码运行正常,但出于某种原因,当您检查priceTypeB的值时,它仍会显示int而不是ePriceType,这会导致代码中的错误进一步发生。

有人可以帮忙吗?

更新

事实上,涉及Web服务的客户端这个问题要复杂得多。我试图简化它如上所述,但显然没有相当的工作,我不知道如何解释完整的问题:(谢谢你的答案

2 个答案:

答案 0 :(得分: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");
        }
    }
}

答案 1 :(得分:0)

试试这个:

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

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

这里将是“固定”