在foreach铸造的问题

时间:2014-03-13 21:53:44

标签: c# casting

我在这部分代码中遇到了一些问题,它来自一个小程序我正在为RPG的魔法项目创建者工作。它应该很简单,spellList(全局声明)是字符串的Hashtable键,值是类' Spells'的对象。

public void PopulateSpellDropDown()
{
    Spells s = new Spells();

    foreach (DictionaryEntry entry in spellList)
    {
        s = entry.Value; **<- Error here, no implicit conversion.**
        cbScrollSpells.Items.Add(entry.Key.ToString());
    }
}

我试过把演员阵容放在我能想到的所有地方,但似乎没什么用。我尝试过搜索一些教程,但似乎没有任何建议可行。我确信这将是一个令人尴尬的简单问题,但我希望得到帮助。

谢谢。

4 个答案:

答案 0 :(得分:3)

这样做:

s = (Spell) entry.Value; 

或者,您可以使用Dictionary<T,T>泛型类型作为集合,然后您就不必进行任何投射。

答案 1 :(得分:2)

当“值是类'法术'的对象时”, 那应该有用:

  s = (Spells) entry.Value; 

答案 2 :(得分:2)

你应该明确地将entry.Value转换为正确的类型,如下所示:

(Spell)entry.Value

另外我更喜欢使用更短的

foreach (var entry in spellList)

而不是

foreach (DictionaryEntry entry in spellList)

答案 3 :(得分:1)

如果条目中的value属性是Spells类型,那么显式强制转换将为您完成这一操作;

s = (Spells)entry.Value;