2017-02-02 65 views
0

我有一个从组中删除用户的功能。错误的信息,因为for循环

首先它检查组中是否有用户。然后在for循环中,它会遍历所有用户,并检查组中是否存在当前输入的用户。

第一次工作。它删除用户。但在第二次用户不再存在,它涉及到else语句。

如何在用户被删除时结束for循环?

下面是代码:

for (int y = 0; y < cognosGroup.members.value.Length; y++) 
{ 
    //check if member[y] is the one that need to be deleted 
    if (cognosGroup.members.value[y].searchPath.value == member[0].searchPath.value) 
    { 
     int lenght = cognosGroup.members.value.Length - 1; 

     baseClass[] newMembers = new baseClass[lenght]; 
     int index = 0; 
     baseClass obj = null; 
     // go trough group 
     for (int i = 0; i <= lenght; i++) 
     { 
      if (i != y) 
      { 
       //create user 
       obj = cognosGroup.members.value[i]; 
       newMembers[index] = obj; 
       index++; 
      } 
      else 
      { 
       this._messageText = "*Succesfully removed " + this.RemoveUsername.ToLower() + " from " + this.DataViewModel.GroupModel.SelectedGroup; 
       this.ExHandling = new ExceptionHandling(this._messageText); 
       this.MessageText = this.ExHandling.ExHandlingOkey; 
      } 
     } 
     cognosGroup.members = new baseClassArrayProp(); 
     cognosGroup.members.value = newMembers; 
     this.LogonModel.CBICMS.update(new baseClass[] { cognosGroup }, new updateOptions()); 
     y--; 
    } 
    else 
    { 
     this._messageText = "*" + this.RemoveUsername.ToLower() + " is not a user from " + this.DataViewModel.GroupModel.SelectedGroup; 
     this.ExHandling = new ExceptionHandling(this._messageText); 
     this.MessageText = this.ExHandling.ExHandlingError; 
    } 
} 
+4

'break'声明?顺便说一下,这段代码可以重写成一行。请参阅:[如何从C#中的数组中删除元素](http://stackoverflow.com/q/496896/69809)。 – Groo

+1

你可以使用break? –

+2

严重的是,不要这样做,如果你可以这样做:'members.value = members.value.Where(v => v.searchPath.value!= item).ToArray();'。 [*代码就好像最终维护你的代码的人是一个暴力的精神病患者,他知道你住在哪里*](http://wiki.c2.com/?CodeForTheMaintainer)。 – Groo

回答

3

只需使用return语句退出程序或继续跳到下一个迭代。

+0

哦,那么容易。非常感谢你! – Purger86

+3

退出退出功能,中断退出你所在的循环。 – Thor