【问题标题】:Get enum int value by string通过字符串获取枚举 int 值
【发布时间】:2013-06-03 07:27:25
【问题描述】:

我已经实现了下面的enum

public enum CaseOriginCode
{
    Web = 0,
    Email = 1,
    Telefoon = 2
}

我想通过string 获得enum int 值。像这样的:

public void setCaseOriginCode(string caseOriginCodeParam)
{
    int caseOriginCode = CaseOriginCode.GetEnumByString(caseOriginCodeParam);
    // do something with this integer
}

所以我的输入是一个字符串,我的输出需要是一个 int。

或者用键值实现字典更好。键是字符串,而 是整数。

【问题讨论】:

    标签: c# enums


    【解决方案1】:

    请尝试以下代码 sn-p。

    public void setCaseOriginCode(string CaseOriginCode)
    {
        int caseOriginCode = (int)(CaseOriginCode)Enum.Parse(typeof(CaseOriginCode), CaseOriginCode);
    }
    

    如果有任何问题,请告诉我。

    【讨论】:

      【解决方案2】:

      有一点需要注意,如果在转换后得到0 的结果,那么很可能是因为您没有为enum 指定值。

      例如,改变这个:

      public enum AcquisitionChannel
      {
          Referal,
          SearchEngines,
          SocialMedia
      }
      

      public enum AcquisitionChannel
      {
          Referral = 1,
          SearchEngines = 2,
          SocialMedia = 3
      }
      

      【讨论】:

        【解决方案3】:

        如果我正确理解了这个问题,为什么不直接使用 switch case?

        public CaseOriginCode setCaseOriginCode(string caseOriginCodeParam)
        {
            switch(caseOriginCodeParam)
            {
                case "Web":
                    return CaseOriginCode.Web;
                case "Email":
                    return CaseOriginCode.Email;
                case "Telefoon":
                    return CaseOriginCode.Telefoon;
                default:
                    return default(CaseOriginCode);
            }
        }
        

        所以在实践中它会是这样的......

        int x = (int)setCaseOriginCode("Web"); // output would be 0
        CaseOriginCode y = setCaseOriginCode("Email"); // output would be CaseOriginCode.Email
        

        【讨论】:

        • 可怕的做法!如果您添加了另一个 enum 成员,您也必须记得在此处更新它!永远不要这样做!
        • @SerjSagan 是的,你必须记住......但是如果你想在返回背后有更多的逻辑,你可能想要这样做......如果你不断地添加到你的枚举你可能不想要一个枚举?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        相关资源
        最近更新 更多