2012-03-13 15 views
0

iは、大規模なスイッチケースを持っている、と私はまた、整数のリストを持っている私は、次のスイッチケース、コードの最適化

をしたい{} 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. 私はリスト
  2. リストのメンバーの一人の場合、コード内で約16の要素持っている私は設定した値を除いてほぼ同じ。 NOTE: 'a'の値を設定するのは、incomingintがリストメンバーの1つである場合にのみ発生します。 そのコードをすべて書き込む代わりに、このコードを最適化する方法はありますか?
+0

それはあなたがTODOをしようとしているものは非常に不明確だ、2つのものが求められている第二のために、これは当てはまらないあるようです-1000) '? – mindandmedia

答えて

1

リストに16個のint型を持っている場合は、他のニュースで

if (incomingint > 1000) a = incomingint - 1000; 

を書き込むことによって、これを最適化することができますようにそれはそう、あなたはほとんど間違いなく、それを最適化する必要はありません。それは非常に小さくて驚異的な量の作業です。

+0

アレックスに感謝しますが、問題の簡単な想像ですが、問題を再編集します。問題は数字が連続していないことです。{1610878977,1610878977、..} –

2

リスト項目とaの値との間のマッピングとなる辞書を作成できます。

var dict = new Dictionary<int,int>(); 
dict.Add(1000, 0); 
dict.Add(1001, 1); 
dict.Add(1002, 5); 
... 

以降:ちょうど計算でincomingintを使用し、incomingintからaを計算する直接方法がある場合は

a = dict[incomingint]; 

。値1000と上記のincomingintについては

a = incomingint - 1000; 

:あなたがポストされたデータは、あなたが簡単に行うことができますように見えます。

+0

このスイッチケースしかし、何度も実行されます。 –

+0

おかげでOdedですが、私はすべての場合に 'a'を設定しません。他のケースは異なるコードを持っています –

+0

@SaraSaeed - あなたが与えた例で包括的な答えを与えるのは難しいです。 – Oded

3

あなたはこの変換のために辞書を使用することができます `=(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 
} 
+0

ありがとうNikolaしかし、私はすべての場合に設定しないでください、他のケースは別のコードを持っています:) –

+1

あなたは、__exceptは、私がa__に設定した値で__exceptと言いました。別のブランチがある場合は、各incomingintの振る舞いを統一コードのための指示を提供するクラスを追加することで、複雑になる可能性があります。 –