我刚才遇到了这种奇怪的情况:我正在编辑一些看起来像这样的遗留代码:
Hashtable hashtable = GetHashtable();
for (int i = 0; i < hashtable.Count; i++)
{
MyStruct myStruct = (MyStruct)hashtable[i];
//more code
}
现在将其更改为foreach
循环时:
var hashtable = GetHashtable();
foreach (var item in hashtable)
{
var myStruct = (MyStruct)item;
//more code
}
我曾假设行为会是一样的,但是,我明白了System.InvalidCastException: Specified cast is not valid.
这种不同行为的原因是什么?