Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从整数列表中切换大小写,代码优化_C#_.net_Optimization - Fatal编程技术网

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

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

我有一个大的开关盒,还有一个整数列表,比如{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 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是列表成员之一时,才会设置“a”的值 因此,除了编写所有这些代码,还有什么方法可以优化这些代码吗

  • 似乎你可以通过写作来优化这一点

    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的指令。