从整数列表切换大小写,代码优化

时间:2012-03-13 13:33:30

标签: c# .net optimization

我有一个大的开关盒,我也有一个整数列表说{1610616833,1610747905,1610878977,1610878977,1611010049} 我想做以下

int a;
    switch (incomingint)
    {
    case 1:
    //some code
    break;

    case 2:
    //some code
    breakl

    //now i want to check if this one is one of the list's integers or not
    //so i did the following
    case 1610616833:
    a=0;
    break;

    case 1610747905:
    a=1;
    break;

    case 1610878977:
    a=2;
    break;
    }

问题是:

  1. 我在列表中有大约16个元素
  2. 除了我为a设置的值之外,其中一个列表成员的代码几乎相同。 注意: 设置'a'的值仅在incomingint是列表成员之一时才会发生 所以不是编写所有代码,有没有办法优化这段代码?

3 个答案:

答案 0 :(得分:3)

您可以使用字典进行此转换:

Dictionary<int, int> transformation = new Dictionary<int, int>
{
   { 1000, 0 },
   { 1001, 1 },

// etc

};

int a = 0; // Default value
if (transformation.TryGetValue(incomingint, out a))
{
   // a has the value. If you need to do something else, you might do it here because you know that dictionary had incomingint
}

答案 1 :(得分:2)

您可以创建一个字典,该字典将是您的列表项与a。

的值之间的映射
var dict = new Dictionary<int,int>();
dict.Add(1000, 0);
dict.Add(1001, 1);
dict.Add(1002, 5);
...

后来:

a = dict[incomingint];

如果有{em>直接方式从a计算incomingint,请在计算中使用incomingint。您发布的数据看起来很简单:

a = incomingint - 1000;

对于值{1000}及以上的incomingint

答案 2 :(得分:1)

似乎你可以通过编写

来优化它
if (incomingint > 1000) a = incomingint - 1000;

在其他新闻中,如果列表中有16个整数,则几乎肯定不需要对其进行优化。这是一项微小而快速的工作。