1

次のコードを使用してリストのリストを辞書のリストにマップしようとしていますが、エラーが発生します

インデックスが範囲外

質問を更新しました

List<List<string>> _terms = new List<List<string>>();
for (int i = 0; i < _numcats; ++i)
{
    _terms.Add( GenerateTerms(_docs[i]));
}
// where _docs[i] is an array element 
// and the procedure GenerateTerms returns list  

int j = 0;
foreach (List <string> catterms in _terms)
{
    for (int i = 0; i < catterms.Count; i++)
    {
        _wordsIndex[j].Add(catterms[i], i);
    }
    j ++;            
}

何か助けてもらえますか?

4

2 に答える 2

1

_wordsIndex はList<Dictionary<string, int>>. その場合は、まだ追加されていないアイテムにアクセスしようとしている可能性があります。したがって、次のように変更する必要があります。

foreach (List <string> catterms in _terms)
{
    var newDict = new Dictionary<string, int>();
    for (int i = 0; i < catterms.Count; i++)
    {
        newDict.Add(catterms[i], i);
    }
    _wordsIndex.Add(newDict)
}

内側のループの前にディクショナリが作成され、内側のループ内に入力され、内側のループが終了した後にメイン リストに追加されることに注意してください。

于 2012-11-28T20:00:25.590 に答える