`enter code here`
public override string GetUserNameBySicil(string sicil) { int total = -1;
var users = FindUsersBySicil(sicil, 0, 3, out total);
if (total > 0)
{
var user = (MemberUser)users.GetEnumerator().Current;
return user.Sicil;
}
return null;
}
public IEnumerator GetEnumerator()
{
return this._Values.GetEnumerator();
}
答案 0 :(得分:1)
要使用MoveNext()
,您需要保留迭代器,然后...调用MoveNext()
,如下所示。
MoveNext()
抛出异常的最常见原因是集合已被修改 - 您添加/删除/替换了一个项目。通常不允许这样做,因此您必须构建代码不要那样做。也许通过在迭代时跟踪计划的更改,然后在迭代后将它们应用于。
var iter = users.GetEnumerator();
using(iter as IDisposable)
{
while(iter.MoveNext())
{
var user = (MemberUser)iter.Current;
// ...
}
}
与:
相同foreach(MemberUser user in users) {
// ...
}
请注意,理想情况下,您有IEnumerator<MemberUser>
,这会大大简化这一过程:
using(var iter = users.GetEnumerator())
{
while(iter.MoveNext())
{
var user = iter.Current;
// ...
}
}
与:
相同foreach(var user in users) {
// ...
}