制作一个从枚举返回字符串的方法更好吗?或者具有一个额外的字符串变量来保存字符串值

本文关键字:字符串 具有一 或者 有一个 保存 变量 方法 一个 返回 枚举 更好 | 更新日期: 2023-09-27 18:29:29

现在我有

    public enum EnumSize { Miniscule, Tiny, Small, Medium, Large, Huge, Giant }

我想要返回字符串值,所以我做了一个switch语句来返回字符串值

    public string getSize()
    {
        string temp = "";
        switch (pSize)
        {
            case EnumSize.Miniscule: temp = "Miniscule"; break;
            case EnumSize.Tiny: temp = "Tiny"; break;
            case EnumSize.Small: temp = "Small"; break;
            case EnumSize.Medium: temp = "Medium"; break;
            case EnumSize.Large: temp = "Large"; break;
            case EnumSize.Huge: temp = "Huge"; break;
            case EnumSize.Giant: temp = "Giant"; break;
        }
        return temp;
    }

无论哪种方式都有什么缺点?还有更好的方法吗?谢谢

制作一个从枚举返回字符串的方法更好吗?或者具有一个额外的字符串变量来保存字符串值

您的getSize()方法可以简化为:

public string getSize()
{
    return pSize.ToString();
}

鉴于该方法确实如此简单,将其作为一个单独的方法提供似乎毫无意义。如果您只是将pSize公开为一个属性(或只读属性),则用户可以简单地对该属性调用ToString()

public EnumSize Size { get { return this.pSize; } }

如果所需的字符串值与枚举值相同,则ToString()方法就足够了:

String temp = pSize.ToString();

但是,如果要将不同的名称(例如本地化的名称)分配给枚举值,您可以使用扩展方法:

public static class EnumSizeExtensions {
  public static String ToName(this EnumSize value) {
    switch (value) {
      case EnumSize.Miniscule: 
        return "My Miniscule size";
      case EnumSize.Tiny: 
        return "My Tiny size";
      case EnumSize.Small: 
        return "My Small size";
      case EnumSize.Medium:  
        return "My Medium size";
      case EnumSize.Large: 
        return "My Large size"; 
      case EnumSize.Huge: 
        return "My Huge size";
      case EnumSize.Giant: 
        return "My Giant size";
      default:
        return "Unknown size";
    }
  }
}
...
String temp = pSize.ToName();