2016-05-20 4 views
1

これは異常です。ハッシュテーブルを使用していますが、変数を持つ要素にアクセスしようとすると、それが見つかりません。ここでハッシュテーブルで変数を使用するとオブジェクトが見つかりません

は私のコードです:

namespace gramerTest 
{ 
    class Program 
    { 
     private static Hashtable byteintmap = new Hashtable(); 

     static Program() 
     { 
      Console.WriteLine("init"); 
      byteintmap.Add(0x1, 0); 
      byteintmap.Add(0x2, 1); 
      byteintmap.Add(0x3, 2); 
      byteintmap.Add(0x4, 3); 
      byteintmap.Add(0x5, 4); 
      byteintmap.Add(0x6, 5); 
     } 

     static void Main(string[] args) 
     { 
      byte b = 0x5; 
      Console.WriteLine(byteintmap[0x5] + " dir"); 
      switch (b) 
      { 
       case 0x5: 
       Console.WriteLine(byteintmap[0x5] + " s var"); 
       break; 
      } 

      Console.WriteLine(byteintmap[b]+" var"); 
     } 
    } 
} 

結果は次のとおりです。

 
init 
4 dir 
4 s var 
var 

答えて

3

それが起こってHashtableをキーとしてオブジェクトを使用しているので:箱入りのバイトは(箱入り整数に等しくない、彼らは保存しても、内部的に同じ値)。

あなたはこれをテストすることができます。最後にConsole.WriteLine(byteintmap[(int)b]+" var");

  1. 変更を:

    object a = (byte)0x5; 
    object b = (int)0x5; 
    Console.WriteLine(a.Equals(b)); //prints False 
    

    あなたは2つのオプションがあります。

  2. 型付けDictionary<int, int>代わり

使用します
関連する問題