我有包含自定义类元素的列表.我想将一个元素的属性赋给变量.
以下代码有效:
string myVar = list[0].MyType.MyStringProperty;
Run Code Online (Sandbox Code Playgroud)
但是我想为列表的其余部分重复这个过程,所以我打算使用循环.但是,此代码不起作用,因为它会抛出ArgumentOutOfRange异常:
for(int i=0; i<=list.Count; i++)
{
myVar = list[i].MyType.MyStringProperty;
}
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
编辑:在第一次执行循环时抛出异常,在最后一行.在调试期间,列表中的元素似乎没问题.它们都具有必需的字符串类型属性,其值为null(除null之外).有可能,它与行有关,但是我使用这个完全相同的方法在其他地方的代码中添加新行,并且它完全正常(但是这些数据不是从列表中获取的).
private void MyMethod(List<MyType> list)
{
for (int i = 1; i < list.Count; i++)
{
DataRow newrow = datatable.NewRow();
newrow["Column"] = list[i].MyStringProperty;
}
}
Run Code Online (Sandbox Code Playgroud)
你的代码中有一个Off-by-one错误.
更改
for(int i=0; i <= list.Count; i++)// <=
Run Code Online (Sandbox Code Playgroud)
至
for(int i=0; i < list.Count; i++)// Note <= is changed to <
Run Code Online (Sandbox Code Playgroud)
你的条件是i<=list.Count循环将在i等于的时候执行,list.Count因为在这种情况下你会得到异常,因为它List<T>是基于零的.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |