我有一些代码:
var result = new List<string>;
...
for (var i = 0; i < level; ++i)
if (result.ElementAtOrDefault(i) == null)
result.Insert(i, " " + positions[i]);
else
result[i] += " " + positions[i];
if (result.ElementAtOrDefault(level) == null)
result.Insert(level, " " + currentPosition);
else
result[level] += " " + currentPosition;
我可以在不检查来自i-position的 null 元素的情况下执行此操作吗?我需要在i-position中添加一部分字符串。但是如果没有创建元素,我有“ArgumentOutOfRangeException”。方法“插入”也不会替换元素,而是将其推回去。
我试图从“ArgumentOutOfRangeException”(哪个索引称为此异常)获取数据,但我失败了。
答案 0 :(得分:1)
您可以通过添加某些条件来减少使用ElementAtOrDefault
int i;
for (i = 0; i < level && i < result.Count; ++i){
//change existing items
result[i] += " " + positions[i];
}
for (int j = 0, countAdd = level - result.Count; j < countAdd; ++j)
//add new items
result.Add(" " + positions[i+j]);
//add current
if (level >= result.Count)
result.Add(" " + currentPosition);
else
result[level] += " " + currentPosition;