从int到Enum的强制转换仍返回int

本文关键字:int 转换 返回 Enum | 更新日期: 2023-09-27 18:20:52

我正试图从int转换为enum,但没有成功,如下所示:

简体中文

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

CAST

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

代码运行良好,但由于某种原因,当您检查priceTypeB的值时,它仍然显示int,而不是ePriceType,这会导致代码后面的错误。

有人能帮忙吗?

更新

事实上,这个问题要复杂得多,涉及到web服务的客户端。我试着按照上面的方式简化它,但显然没有完全奏效,我不确定如何最简单地解释整个问题:(无论如何,谢谢你的回答

从int到Enum的强制转换仍返回int

当你检查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");
        }
    }
}

试试这个:

public class EnumProvider
{
   public enum ePriceType{
  Fixed = 1,
  Variable = 2
}
var a = Enum.GetName(typeof(EnumProvider.ePriceType), 1);

这里的是"固定的"