2

现在我有

    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;
    }

这样做有什么缺点?有没有更好的方法?谢谢!

4

2 回答 2

4

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

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

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

public EnumSize Size { get { return this.pSize; } }
于 2013-08-29T03:58:54.730 回答
2

如果所需的字符串值与枚举值相同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();
于 2013-08-29T06:13:38.587 回答