【问题标题】:to many IF how to make quicker search c# [closed]对许多 IF 如何更快地搜索 c# [关闭]
【发布时间】:2017-04-08 02:58:13
【问题描述】:

有 5 个名字和 5 个数字。 给名字需要号码。 更好的方法?

 string name = "Mark";
    int x;
if(name == "John")
{
 x = 1;
}else if(name == "Jimy"){
x = 2;
}else if(name == "Mark"){
x = 3;
}.... etc
return x;

结果是 x=3。

【问题讨论】:

  • 您是否保证始终拥有唯一的名称?这似乎不是一个非常可持续的key
  • 总是5个相同的名字和数字。

标签: c# asp.net if-statement


【解决方案1】:

通常,如果您有一个想要与其他项目关联的唯一项目列表,Dictionary 是一个很好的解决方案。字典中的每一项都称为KeyValuePair,由两部分组成:唯一的key,在本例中为名称,以及与该键关联的value,在本例中为int .

对于您的示例,它看起来像:

// The part in parenthesis specifies that the keys will be 
// case-insensitive when doing comparisons, so you can search 
// for "john", "John", or "JOHN", and get the same value back
private static  Dictionary<string, int> nameValues = 
    new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
{
    {"John", 1},
    {"Jimmy", 2},
    {"Mark", 3}
};

检索名称的 int 值的方法可能如下所示:

private static int GetIntForName(string name)
{
    var valueIfNotFound = -1;
    return nameValues.ContainsKey(name) ? nameValues[name] : valueIfNotFound;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多