为什么enum需要在与C#中的整数值进行比较时转换为int

时间:2018-01-09 05:23:10

标签: c# asp.net asp.net-mvc enums

例如,我在C#中声明了以下enum

C#代码:

public enum LobMaster :int 
{
    RetailBroking = 1,
    HNI = 2,
    TechnologyInfrastructure = 3,
}

cshtml代码:

@int code = 2
@if (LobMaster.RetailBroking == code)
{

}

如果我尝试将int enum与整数值进行比较,则会给出以下错误消息。

  

运营商' =='不能应用于类型' LobMaster'和' int'

虽然我的枚举

  

LobMaster

已经是一个int类型。

但是当我将枚举转换为int然后与int值进行比较时,它工作正常。 所以我的问题是为什么我需要将枚举转换为int,因为枚举已经是一个int。

2 个答案:

答案 0 :(得分:5)

Enums的主要目的是删除“魔法数字”,所以你应该问问自己 - 你为什么要使用那些神奇的数字?

更好的比较是:

Session["Lob_code"] is LobMaster && LobMaster.MassAffluent == (LobMaster)Session["Lob_code"]

这样你就可以避免那些神奇的数字,你的代码只提供了所有的上下文。

答案 1 :(得分:0)

@if ((int) LobMaster.MassAffluent == Convert.ToInt32(Session["Lob_code"])) { }

你应该能够施放左手值,然后进行比较