C# 从整数列表中切换大小写,代码优化
我有一个大的开关盒,还有一个整数列表,比如{161061683316107479051610879771610878977161010049} 我想做以下几件事C# 从整数列表中切换大小写,代码优化,c#,.net,optimization,C#,.net,Optimization,我有一个大的开关盒,还有一个整数列表,比如{161061683316107479051610879771610878977161010049} 我想做以下几件事 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
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;
}
问题是:
似乎你可以通过写作来优化这一点
if (incomingint > 1000) a = incomingint - 1000;
在其他新闻中,如果列表中有16个整数,则几乎肯定不需要对其进行优化。这是一个非常小的工作量。看起来你可以通过编写
if (incomingint > 1000) a = incomingint - 1000;
在其他新闻中,如果列表中有16个整数,则几乎肯定不需要对其进行优化。这是一个非常小的工作量。您可以创建一个字典,它将是列表项和a值之间的映射
var dict = new Dictionary<int,int>();
dict.Add(1000, 0);
dict.Add(1001, 1);
dict.Add(1002, 5);
...
如果有直接的方法从
incomingint
计算a
,只需在计算中使用incomingint
。您发布的数据看起来可以简单地执行以下操作:
a = incomingint - 1000;
对于值为1000及以上的
incomingint
。您可以创建一个字典,作为列表项和a值之间的映射
var dict = new Dictionary<int,int>();
dict.Add(1000, 0);
dict.Add(1001, 1);
dict.Add(1002, 5);
...
如果有直接的方法从
incomingint
计算a
,只需在计算中使用incomingint
。您发布的数据看起来可以简单地执行以下操作:
a = incomingint - 1000;
对于值为1000及以上的
incomingint
。您可以使用字典进行此转换:
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
}
字典转换=新字典
{
{ 1000, 0 },
{ 1001, 1 },
//等
};
int a=0;//默认值
if(transformation.TryGetValue(输入,输出a))
{
//a有这个值。如果你需要做其他事情,你可以在这里做,因为你知道字典有incomingint
}
您可以使用字典进行此转换:
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
}
字典转换=新字典
{
{ 1000, 0 },
{ 1001, 1 },
//等
};
int a=0;//默认值
if(transformation.TryGetValue(输入,输出a))
{
//a有这个值。如果你需要做其他事情,你可以在这里做,因为你知道字典有incomingint
}
谢谢Alex,但这是对问题的简单想象,我会再次编辑问题,问题是数字不按顺序{1610878977161089777,…等}谢谢Alex,但这是对问题的简单想象,我会再次编辑问题,问题是数字不按顺序{1610878977161088777,…等}很不清楚你想做什么,似乎有两件事被问到,第二件,这是否成立:a=(incomingInt-1000)
?很不清楚你想做什么,似乎有两件事被问到,第二件,这是否成立:a=(incomingInt-1000)
?除非多次执行此开关案例,否则这实际上不是一个优化。感谢Oded,但我没有在所有情况下都设置“a”,其他案例则有不同的解释code@SaraSaeed-很难用您给出的示例给出全面的答案。这实际上不是一个优化,除非多次执行此切换情况。感谢Oded,但我没有在所有情况下都设置“a”,其他案例则有不同的解释code@SaraSaeed-很难用你给出的例子给出一个全面的答案。谢谢Nikola,但我并没有在所有情况下都设置a,其他情况下都有不同的代码:)除了我为a设置的值之外,你说了。如果你有不同的分支,你可能会通过添加一个类来让事情复杂化,该类将为统一代码提供指导,如何处理每个incomingint。谢谢Nikola,但我没有在所有情况下都设置a,其他情况下都有不同的代码:)你说的,除了我为a设置的值。如果您有不同的分支,您可能会通过添加一个类来使事情复杂化,该类将为统一代码提供如何处理每个incomingint的指令。