Die Elemente in einem ArrayList
als object
eingegeben werden. Daher weiß C# nicht, dass sie ein Mitglied mit dem Namen AccN
haben.
Es gibt ein stark typisiertes, generisches Äquivalent von ArrayList
mit dem Namen List<T>
. Hier geben Sie die Art der Listenelemente explizit, wenn Sie die Liste mit
List<Account> accounts = new List<Account>();
Diese Liste erstellen auch Objekte der abgeleiteten Klassen CurrentAccount
und DepositAccount
enthalten. Verwenden Sie es wie folgt
public static void Remove(List<Account> L, int accnb)
{
foreach(Account acc in L)
{
if(acc.AccN == accnb)
L.Remove(acc);
}
}
Hinweis: in C# 1.0 und C# 1.1 gab es keine Generika. Daher wurde die schwach typisierte Sammlung ArrayList
implementiert. Da Generika in C# 2.0 eingeführt wurden, ist dieser Typ meist veraltet.
Mit ArrayList
würden Sie das Objekt auf die richtige Art werfen müssen, um es
if(((Account)acc).AccN == accnb)
Sie haben auch ein anderes Problem funktioniert. Sie können nicht genau die Auflistung ändern, die Sie mit foreach
aufzählen, da dies foreach
verwirrt. Verwenden Sie stattdessen eine for-Schleife, und stellen Sie sicher, dass Sie die Schleife in umgekehrter Reihenfolge ausführen, damit beim Entfernen von Elementen die Indizes der Elemente nicht geändert werden.
for (int i = L.Count - 1; i >= 0; i--) {
if (L[i].AccN == accnb) {
L.RemoveAt(i);
}
}
Die C# Reference sagt:
Die foreach
Anweisung verwendet wird, durch die Sammlung iterieren um die Informationen zu erhalten, die Sie wollen, aber nicht verwendet werden kann, um Elemente aus der Quellensammlung hinzufügen oder entfernen Vermeiden Sie unvorhersehbare Nebenwirkungen. Wenn Sie Elemente aus der Quellensammlung hinzufügen oder daraus entfernen möchten, verwenden Sie eine for-Schleife.
aah okk Ursache Liste funktioniert nicht, ich habe einen Fehler Der Typ oder Namespacename 'Liste' wurde nicht gefunden (fehlt eine using-Direktive oder eine Assemblyreferenz? –
Fügen Sie 'using System.Collections.Generic 'an der Spitze Ihres Codes oder verwenden Sie die Glühbirne, die es für Sie tut. –
es funktioniert nicht:/Ich versuche die Antwort über Sie funktioniert, aber es ist neu für mich –