这是我的代码
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创建的新对象。
我的要求是在哈希表中获取对象,并且在需要的时间我想在其他地方分配上面代码中显示的示例。
答案 0 :(得分:1)
您需要提供类型转换信息。 objhashmap [key] 返回 普通对象,所以你必须抛出它们。
此代码可能会抛出异常。铸造是一项微妙的操作。如果演员阵容适用于 不同的类型,该语句可能会抛出InvalidCastException。您 可以通过使用is或as-statements来避免这种情况。
如下所示:
ADXVoice obj= objhashmap[key] as ADXVoice;
请参阅以下链接,了解如何正确使用HashTable:
C# Hashtable
Hashtable Class