开关的情况下,代码优化
我有一个大的开关情况下,我也有一列整数说{} 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;
}
的问题是:
- 我在列表
- 在列表中的成员之一的情况下,代码约16件,除了在我的设置的值几乎相同。 注: 设置的值“a”时才会发生的incomingint是列表成员 之一,所以不是编写所有的代码的,有没有什么办法来优化该代码?
好像你可以通过在其他新闻写作
if (incomingint > 1000) a = incomingint - 1000;
优化这个,如果你在列表中有16个整数,你几乎肯定不需要去优化它。这是一个微小的,快速的工作量。
感谢亚历克斯,但它的问题的一个简单的想象,我会重新编辑的问题,问题是,数字不按顺序{1610878977,1610878977,...等} – 2012-03-13 13:37:11
您可以创建一个字典,这将是一个列表项和值之间的映射。
var dict = new Dictionary<int,int>();
dict.Add(1000, 0);
dict.Add(1001, 1);
dict.Add(1002, 5);
...
及更高版本:
a = dict[incomingint];
如果计算从incomingint
a
,只是在计算中使用incomingint
一个直接方式。您发布的数据看起来,你可以简单地做:
a = incomingint - 1000;
对于值1000以上的incomingint
。
这其实不是,除非此开关的情况下优化但是执行很多次。 – 2012-03-13 13:40:30
谢谢俄德但我不设置“一”在所有情况下,在其他情况下有不同的代码 – 2012-03-13 13:41:07
@SaraSaeed - 这是很难给你给的例子一个全面的答案。 – Oded 2012-03-13 13:44:11
你可以使用字典这种转变:
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
}
感谢尼古拉,但我没有设定一个在所有情况下,其他情况下有不同的代码:) – 2012-03-13 13:40:40
你说我中了A__设置的值__except。如果你有不同的分支,你可能会添加一个类来为复杂的事情提供指导,这些类将为统一代码提供如何为每个incomingint行为的指令。 – 2012-03-13 13:44:15
这是非常不清楚你正在尝试待办事项,似乎有两种东西问和第二,这是否成立:'A =(incomingInt -1000)'? – mindandmedia 2012-03-13 13:37:33