如何在C#中将对象分配给哈希表值

时间:2014-11-13 06:13:24

标签: c#

这是我的代码

class Program
{

    public static IADXVoice ADXVoice1 = new Envox.ADXVoice.ADXVoice();

    static void Main(string[] args)
    {

        Hashtable objhashmap = new Hashtable();
        objhashmap.Add(8533, ADXVoice1);
        ICollection keytest = objhashmap.Values;
        ICollection keytest1 = objhashmap.Keys;

        foreach (int key in objhashmap.Keys)
        {
            Console.WriteLine("{0}, {1}", key, objhashmap[key]);
            //Console.WriteLine("{0}, {1}", key, objhashmap[key]);
            ADXVoice obj = objhashmap[key];// Am getting convert type error as Cannot implicitly convert type 'object' to 'Envox.ADXVoice.ADXVoice'. An explicit conversion exists (are you missing a cast?)

            Console.ReadKey();
        }
    }
}

在上面的代码中,我无法将哈希表值分配给为代码中使用的dll创建的新对象。

我的要求是在哈希表中获取对象,并且在需要的时间我想在其他地方分配上面代码中显示的示例。

1 个答案:

答案 0 :(得分:1)

  

您需要提供类型转换信息。 objhashmap [key] 返回   普通对象,所以你必须抛出它们。

     

此代码可能会抛出异常。铸造是一项微妙的操作。如果演员阵容适用于   不同的类型,该语句可能会抛出InvalidCastException。您   可以通过使用is或as-statements来避免这种情况。

如下所示:

ADXVoice obj= objhashmap[key] as ADXVoice;

请参阅以下链接,了解如何正确使用HashTable:
C# Hashtable
Hashtable Class