Heim >Backend-Entwicklung >C++ >Wie kann ich die Warnung „Mögliche mehrfache Aufzählung von IEnumerable' in C# vermeiden?

Wie kann ich die Warnung „Mögliche mehrfache Aufzählung von IEnumerable' in C# vermeiden?

Linda Hamilton
Linda HamiltonOriginal
2025-01-04 14:48:40714Durchsuche

How Can I Avoid the

Umgang mit den Gefahren der mehrfachen Aufzählung von IEnumerable

Bei der Arbeit mit IEnumerable-Sammlungen stoßen Entwickler häufig auf die Warnung „Mögliche mehrfache Aufzählung von IEnumerable“. ,“ was entsteht, wenn die Sammlung mehrmals iteriert wird. Dieses Problem kann problematisch sein, insbesondere wenn Sie mit bestimmten Arten von Sammlungen arbeiten, z. B. solchen, die Datenbankabfragen oder andere teure Vorgänge darstellen.

Bedenken Sie den folgenden Codeausschnitt:

public List<object> Foo(IEnumerable<object> objects)
{
    if (objects == null || !objects.Any())
        throw new ArgumentException();

    var firstObject = objects.First();
    var list = DoSomeThing(firstObject);        
    var secondList = DoSomeThingElse(objects);
    list.AddRange(secondList);

    return list;
}

Eine Möglichkeit dazu Um die Warnung vor mehrfacher Aufzählung zu vermeiden, müssen Sie den Methodenparameter so ändern, dass ein List akzeptiert wird. anstelle von IEnumerable. Dieser Ansatz ist jedoch möglicherweise nicht immer machbar, insbesondere wenn Sie den Zugriff auf das höchste Objekt in der Sammlung behalten möchten.

Eine andere Möglichkeit besteht darin, IEnumerable am Anfang der Methode in eine Liste umzuwandeln:

public List<object> Foo(IEnumerable<object> objects)
{
    var objectList = objects.ToList();
    // ...
}

Obwohl diese Technik die Warnung effektiv verhindert, kann sie sich unangenehm und unnötig ausführlich anfühlen.

Der Schlüssel zum Verständnis dieses Problems liegt in der Semantik, die durch die Methodensignatur vermittelt wird. Die Übergabe eines IEnumerable-Parameters impliziert, dass der Aufrufer davon ausgeht, dass die Methode die Sammlung nur einmal aufzählt. Indem Sie eine IList oder ICollection akzeptieren, teilen Sie den Anrufern explizit Ihre Erwartungen an die Sammlung mit und verringern so das Risiko von Missverständnissen und kostspieligen Fehlern.

In Situationen, in denen die Verwendung eines IEnumerable unerlässlich ist, ist es ratsam, die ToList( ) Konvertierung am Anfang der Methode. Dadurch wird sichergestellt, dass nachfolgende Iterationen nicht auf die Mehrfachaufzählungswarnung stoßen.

Es ist bedauerlich, dass .NET keine Schnittstelle bereitstellt, die die Funktionalität von IEnumerable, Count und einem Indexer ohne die Methoden zum Hinzufügen oder Entfernen kapselt. Eine solche Schnittstelle würde dieses Problem erheblich vereinfachen und eine sauberere und präzisere Lösung bieten.

Das obige ist der detaillierte Inhalt vonWie kann ich die Warnung „Mögliche mehrfache Aufzählung von IEnumerable' in C# vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn