对很多人来说如何更快地搜索c#

时间:2017-04-08 02:58:14

标签: c# asp.net if-statement

有5个名字和5个号码。 Giv名称需要编号。 更好的方法?

 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.

1 个答案:

答案 0 :(得分: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;
}