有没有更有效的方法来返回基于传递给方法的数字的字符串?

时间:2016-11-26 05:23:41

标签: c#

我编写了这种方法来满足我的需求。这里还有三个案例值,但我没有包括它们。

    public static string scoreColumn(int num)
    {
        switch (num)
        {
            case 1: return "English";
            case 2: return "Kanji"; 
        }
        return "";
    }

有人能告诉我这是在这种方法中返回字符串的最佳和最简洁的方法。我错过了一种更明显,更简单的方法来实现相同的功能吗?

4 个答案:

答案 0 :(得分:2)

字符串数组可以帮助我而不是编写新方法。

答案 1 :(得分:2)

您可以将Dictionary用于此目的。

private static readonly Dictionary<int, string> dic = new Dictionary<int, string>
{
    {1,"abc" },
    {2,"efg" },
    //...
};

public static string scoreColumn(int num)
{
    string val;
    if(dic.TryGetValue(num, out val)) return val;
    else return "";
}

对于大量案例,词典表现更好。对于使用字典的少量案例也不应该是一个问题。也可以使用字典,您可以更轻松地管理案例。

答案 2 :(得分:2)

在这种情况下,与整数相比,enum是更好的选择,并且由于您的描述没有空格,因此您只需使用.ToString()输出枚举名称。

如果你想变得更加漂亮,你可以为枚举成员添加属性,但是将它们取出需要一些反思技巧。你可以将这个扩展方法封装起来,但它是一种丑陋的方法。

有关示例,请参阅http://www.codeducky.org/ins-outs-c-enums/(最后一个示例使用属性,它们也显示.ToString()方法。)

答案 3 :(得分:2)

使用易于使用和阅读的内容,并仅在需要时担心效率。

string[] scoreColumn = { "English", "Kanji" }; 

string result = scoreColumn.ElementAtOrDefault(num - 1);