Ich habe eine Funktion, die einen Benutzer aus einer Gruppe löscht.Falsche Nachricht wegen For-Schleife
Zuerst wird geprüft, ob überhaupt Benutzer in der Gruppe sind. Dann durchläuft es in einer For-Schleife alle Benutzer und prüft, ob der aktuelle Benutzer, der eingegeben wurde, in der Gruppe existiert.
Zum ersten Mal funktioniert es. Es löscht den Benutzer. Aber in der zweiten Zeit existiert der Benutzer nicht mehr und es kommt zur else-Anweisung.
Wie kann ich die for-Schleife beenden, wenn der Benutzer gelöscht wird? Hier
ist der Code:
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;
}
}
'break' Aussage? Übrigens kann dieser Code in eine einzelne Zeile umgeschrieben werden. Siehe: [Wie lösche ich ein Element aus einem Array in C#] (http://stackoverflow.com/q/496896/69809). – Groo
könnten Sie Pause verwenden? –
Im Ernst, tun Sie dies nicht, wenn Sie dies tun können: 'members.value = members.value.Where (v => v.searchPath.value! = Item) .ToArray();'. [* Code, als ob die Person, die endet, Ihren Code aufrechtzuerhalten, ein gewalttätiger Psychopath ist, der weiß, wo Sie leben *] (http://wiki.c2.com/?CodeForTheMaintainer). – Groo