2

私の人生では、レガシーコードがこれを行っている理由を理解できません。

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);
    }
}

...しかし、「値が期待される範囲内にありません」というメッセージが表示されます

4

2 に答える 2

0

デバッグ ビルドでアサートをフックして、HashSiteMapping クラスの「期待される範囲」として定義されているものに違反する値を監視することができます。

于 2013-04-03T00:20:07.637 に答える