我一生都无法弄清楚遗留代码为什么会这样做:
HashSiteMapping.Add(""+sm.SiteNumber, sm.LocationNumber);
...当这似乎更明智时:
HashSiteMapping.Add(sm.SiteNumber, sm.LocationNumber);
我只是耸耸肩,把它归结为这段代码的一般奇怪之处,但我在这段代码中得到“值不在预期范围内”,我想知道这是否可能是问题所在。在更完整的上下文中,代码是这样的:
IEnumerator en = mFile.Map.Mappings.GetEnumerator();
while (en.MoveNext())
{
SiteMapping sm = (SiteMapping) en.Current;
HashSiteMapping.Add(""+sm.SiteNumber, sm.LocationNumber);
}
...我将其更改为:
IEnumerator en = mFile.Map.Mappings.GetEnumerator();
while (en.MoveNext())
{
SiteMapping sm = (SiteMapping) en.Current;
if (!HashSiteMapping.Contains(sm.SiteNumber))
{
HashSiteMapping.Add(sm.SiteNumber, sm.LocationNumber);
}
}
...但我仍然得到,“价值不在预期范围内”