2016-05-12 62 views
0

我在C#创建哈希表然后将其添加键和我加入数组列表作为值C#哈希表不打印任何结果

那么我特林打印数组列表这是值但它不工作

using System; 

namespace text.cs 
{ 
    class Exec 
    { 
     static void Main(string[] args) 
     { 
      Hashtable variations_array = new Hashtable(); 
      ArrayList item_array = new ArrayList(); 
      item_array.Add ("one"); 
      item_array.Add ("two"); 
      variations_array.Add ("hi", item_array); 
      if (variations_array.Contains("one")) 
      { 
       Console.WriteLine("This student name is already in the list"); 
      } 

      foreach (DictionaryEntry entry in variations_array) 
      { 
       //Console.Write (entry.Key); 
       string sv = (entry.Key as string[])[ 0 ]; 
       Console.WriteLine("{0}",sv); 


      } 

      foreach (KeyValuePair<string, List<string>> pair in variations_array) 
      { 
       Console.WriteLine(pair.Key); 
       foreach (string item in pair.Value) 
        Console.WriteLine("\t" + item); 
      } 
     } 
    } 
} 

我有三个打印语句(Console.Write),但他们都没有工作?

如何使它工作?

+2

你还在使用非泛型集合而不是'字典<,>'和'名单<>'任何理由吗? –

+0

修复此行:string sv =(entry.Key as string); – jdweng

回答

2

这种情况检查用值"one"的关键:

variations_array.Contains("one") 

不存在的 - 你添加的"hi"关键的一个条目。这就是为什么你的第一个Console.WriteLine不执行。

下一页:

string sv = (entry.Key as string[])[ 0 ]; 
Console.WriteLine("{0}",sv); 

的关键不是一个字符串数组 - 这是一个字符串。因此,as运营商返回null,你应该得到一个NullReferenceException

下一页:

foreach (KeyValuePair<string, List<string>> pair in variations_array) 

这是执行DictionaryEntryKeyValuePair<string, List<string>>的隐式转换。演员阵容将失败。所以如果你的代码由于前面的问题而没有引发异常,那么在这里就会失败。

很难知道如何“修理”这是我们不是在你想达到什么是很清楚,但我强烈劝你开始使用泛型集合(如List<T>Dictionary<TKey, TValue> ),这将让生活更简单:

var dictionary = new Dictionary<string, List<string>>(); 
dictionary["hi"] = new List<string> { "one", "two" }; 
foreach (var entry in dictionary) 
{ 
    Console.WriteLine("Key: {0}", entry.Key); 
    Console.WriteLine("Values: {0}", string.Join(", ", entry.Value)); 
} 
+0

而不是这个string.Join(“,”,entry.Value)我怎么能得到数组的第一个元素? – Mounarajan

+0

@Mounarajan:那么'entry.Value'是一个'List ' - 所以我建议你看一下'List '的文档。如果您仍然对自己想要做的其他方面有疑问,请在新的(特定)帖子中提问。 –