制作一个从枚举返回字符串的方法更好吗?或者具有一个额外的字符串变量来保存字符串值
本文关键字:字符串 具有一 或者 有一个 保存 变量 方法 一个 返回 枚举 更好 | 更新日期: 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();