Behebung der möglichen Mehrfachaufzählung von IEnumerable-Warnung
Bei der Programmierung tritt die Warnung „Mögliche Mehrfachaufzählung von IEnumerable“ auf, wenn eine IEnumerable-Instanz vorhanden ist mehrfach innerhalb einer Methode iteriert. Dieses Problem tritt auf, weil Iteratoren einen Status haben und nachfolgende Aufzählungen möglicherweise unterschiedliche Ergebnisse liefern oder Ausnahmen auslösen.
Im bereitgestellten Beispielcode:
public List<object> Foo(IEnumerable<object> objects) { // ... }
Der Objektparameter ist als IEnumerable
Alternative Lösungen
Die vorgeschlagenen Lösungen umfassen:
Optimale Lösung
Die empfohlene Vorgehensweise hängt von der jeweiligen Situation ab Anforderungen der Methode und das erwartete Verhalten von Aufrufern.
Wenn die Methode eine feste Sammlung erwartet, die mehrfach aufgezählt werden kann, empfiehlt es sich, den Parameter als IList/ICollection zu deklarieren. Dadurch werden dem Aufrufer die Erwartungen klar mitgeteilt und verhindert, dass er versehentlich ein teures Objekt übergibt, von dem er erwartet, dass es nur einmal aufgezählt wird.
Alternativ ist dies akzeptabel, wenn die Methode ein IEnumerable akzeptieren muss und mehrere Aufzählungen erfordert Führen Sie zu Beginn der Methode eine .ToList()-Konvertierung durch. Dieser Ansatz sollte jedoch angesichts der möglichen Auswirkungen auf die Leistung mit Vorsicht verwendet werden.
Es ist wichtig zu beachten, dass .NET keine speziell für aufzählbare Sammlungen entwickelte Schnittstelle mit Zähl- und Indexerzugriff ohne Hinzufügungs-/Entfernungsfunktionen aufweist wäre ideal, um dieses Problem zu lösen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit der Warnung „Mögliche Mehrfachaufzählung von IEnumerable' in C# umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!